namespace GFramework.Core.logging; /// /// 日志配置类,用于配置日志记录器的行为 /// public sealed class LogConfig { /// /// 获取或设置默认的最小日志级别(默认为Info) /// public LogLevel DefaultMinLevel { get; set; } = LogLevel.Info; /// /// 获取或设置是否启用控制台输出(默认为true) /// public bool EnableConsole { get; set; } = true; /// /// 获取或设置是否使用彩色输出(默认为true) /// public bool UseColors { get; set; } = true; /// /// 获取或设置是否启用文件输出(默认为false) /// public bool EnableFile { get; set; } /// /// 获取或设置日志文件路径(当EnableFile为true时使用) /// public string? LogFilePath { get; set; } /// /// 取特定类别的日志级别配置 /// private readonly Dictionary _categoryLevels = new(); /// /// 设置特定类别的日志级别 /// /// 日志类别 /// 日志级别 public void SetCategoryLevel(string category, LogLevel level) { _categoryLevels[category] = level; } /// /// 获取类别的日志级别,如果没有特定配置则返回默认级别 /// /// 日志类别 /// 日志级别 public LogLevel GetCategoryLevel(string? category) { if (category != null && _categoryLevels.TryGetValue(category, out var level)) { return level; } return DefaultMinLevel; } /// /// 创建控制台日志记录器 /// /// 日志类别 /// 日志记录器实例 public ILog CreateConsoleLogger(string? category = null) { var level = GetCategoryLevel(category); return new ConsoleLogger(category, level, null, UseColors); } /// /// 创建文件日志记录器 /// /// 日志类别 /// 日志记录器实例 public ILog CreateFileLogger(string? category = null) { if (!EnableFile || string.IsNullOrEmpty(LogFilePath)) return new NullLogger(); try { var level = GetCategoryLevel(category); var directory = Path.GetDirectoryName(LogFilePath); if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) { Directory.CreateDirectory(directory); } var writer = new StreamWriter(LogFilePath, append: true); return new ConsoleLogger(category, level, writer, useColors: false); } catch { // 如果创建文件失败,返回空日志记录器 return new NullLogger(); } } }