Files
XplorePlane/XP.Common/Logging/Configs/ConfigLoader.cs
T

51 lines
2.4 KiB
C#

using System.Configuration;
namespace XP.Common.Logging.Configs
{
/// <summary>
/// Serilog 配置加载器,从 App.config 读取日志相关配置项 | Serilog configuration loader, reads logging-related configuration from App.config
/// </summary>
public static class ConfigLoader
{
/// <summary>
/// 配置键前缀 | Configuration key prefix
/// </summary>
private const string KeyPrefix = "Serilog:";
/// <summary>
/// 从 App.config 加载 Serilog 配置 | Load Serilog configuration from App.config
/// </summary>
/// <returns>Serilog 配置实体,缺失或无效配置项使用默认值 | Serilog configuration entity, uses default values for missing or invalid items</returns>
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;
}
}
}