using System.Configuration; namespace XP.Common.Logging.Configs { /// /// Serilog 配置加载器,从 App.config 读取日志相关配置项 | Serilog configuration loader, reads logging-related configuration from App.config /// public static class ConfigLoader { /// /// 配置键前缀 | Configuration key prefix /// private const string KeyPrefix = "Serilog:"; /// /// 从 App.config 加载 Serilog 配置 | Load Serilog configuration from App.config /// /// Serilog 配置实体,缺失或无效配置项使用默认值 | Serilog configuration entity, uses default values for missing or invalid items public static SerilogConfig LoadSerilogConfig() { var config = new SerilogConfig(); // 加载日志路径 | Load log path var logPath = ConfigurationManager.AppSettings[KeyPrefix + "LogPath"]; if (!string.IsNullOrEmpty(logPath)) config.LogPath = logPath; // 加载最低日志级别 | Load minimum level var minLevel = ConfigurationManager.AppSettings[KeyPrefix + "MinimumLevel"]; if (!string.IsNullOrEmpty(minLevel)) config.MinimumLevel = minLevel; // 加载是否输出到控制台 | Load enable console var enableConsole = ConfigurationManager.AppSettings[KeyPrefix + "EnableConsole"]; if (bool.TryParse(enableConsole, out var console)) config.EnableConsole = console; // 加载日志文件分割规则 | Load rolling interval var rollingInterval = ConfigurationManager.AppSettings[KeyPrefix + "RollingInterval"]; if (!string.IsNullOrEmpty(rollingInterval)) config.RollingInterval = rollingInterval; // 加载单个日志文件最大大小 | Load file size limit var fileSize = ConfigurationManager.AppSettings[KeyPrefix + "FileSizeLimitMB"]; if (long.TryParse(fileSize, out var size) && size > 0) config.FileSizeLimitMB = size; // 加载保留日志文件数量 | Load retained file count limit var retainCount = ConfigurationManager.AppSettings[KeyPrefix + "RetainedFileCountLimit"]; if (int.TryParse(retainCount, out var count) && count > 0) config.RetainedFileCountLimit = count; return config; } } }