using System.Configuration; using XP.Common.Configs; using XP.Common.Dump.Configs; namespace XP.Common.Helpers { /// /// 通用配置加载工具(读取App.config) /// public static class ConfigLoader { /// /// 加载Serilog配置 /// public static SerilogConfig LoadSerilogConfig() { var config = new SerilogConfig(); var logPath = ConfigurationManager.AppSettings["Serilog:LogPath"]; if (!string.IsNullOrEmpty(logPath)) config.LogPath = logPath; var minLevel = ConfigurationManager.AppSettings["Serilog:MinimumLevel"]; if (!string.IsNullOrEmpty(minLevel)) config.MinimumLevel = minLevel; var enableConsole = ConfigurationManager.AppSettings["Serilog:EnableConsole"]; if (bool.TryParse(enableConsole, out var console)) config.EnableConsole = console; var rollingInterval = ConfigurationManager.AppSettings["Serilog:RollingInterval"]; if (!string.IsNullOrEmpty(rollingInterval)) config.RollingInterval = rollingInterval; var fileSize = ConfigurationManager.AppSettings["Serilog:FileSizeLimitMB"]; if (long.TryParse(fileSize, out var size)) config.FileSizeLimitMB = size; var retainCount = ConfigurationManager.AppSettings["Serilog:RetainedFileCountLimit"]; if (int.TryParse(retainCount, out var count)) config.RetainedFileCountLimit = count; return config; } /// /// 加载SQLite配置 /// public static SqliteConfig LoadSqliteConfig() { var config = new SqliteConfig(); var dbPath = ConfigurationManager.AppSettings["Sqlite:DbFilePath"]; if (!string.IsNullOrEmpty(dbPath)) config.DbFilePath = dbPath; var timeout = ConfigurationManager.AppSettings["Sqlite:ConnectionTimeout"]; if (int.TryParse(timeout, out var t)) config.ConnectionTimeout = t; var createIfNotExists = ConfigurationManager.AppSettings["Sqlite:CreateIfNotExists"]; if (bool.TryParse(createIfNotExists, out var c)) config.CreateIfNotExists = c; var enableWal = ConfigurationManager.AppSettings["Sqlite:EnableWalMode"]; if (bool.TryParse(enableWal, out var w)) config.EnableWalMode = w; var enableSqlLog = ConfigurationManager.AppSettings["Sqlite:EnableSqlLogging"]; if (bool.TryParse(enableSqlLog, out var l)) config.EnableSqlLogging = l; return config; } /// /// 加载 Dump 配置 | Load Dump configuration /// public static DumpConfig LoadDumpConfig() { var config = new DumpConfig(); var storagePath = ConfigurationManager.AppSettings["Dump:StoragePath"]; if (!string.IsNullOrEmpty(storagePath)) config.StoragePath = storagePath; var enableScheduled = ConfigurationManager.AppSettings["Dump:EnableScheduledDump"]; if (bool.TryParse(enableScheduled, out var enabled)) config.EnableScheduledDump = enabled; var interval = ConfigurationManager.AppSettings["Dump:ScheduledIntervalMinutes"]; if (int.TryParse(interval, out var min)) config.ScheduledIntervalMinutes = min; var sizeLimit = ConfigurationManager.AppSettings["Dump:MiniDumpSizeLimitMB"]; if (long.TryParse(sizeLimit, out var size)) config.MiniDumpSizeLimitMB = size; var retentionDays = ConfigurationManager.AppSettings["Dump:RetentionDays"]; if (int.TryParse(retentionDays, out var days)) config.RetentionDays = days; return config; } } }