namespace GFramework.Core.logging; /// /// 日志记录的静态类,提供全局日志记录功能 /// public static class Log { private static ILoggerFactory? _factory; private static LogConfig? _config; /// /// 获取当前的日志记录器实例 /// public static ILog Instance { get; private set; } = new ConsoleLogger(); /// /// 获取当前的日志配置 /// public static LogConfig Config => _config ??= new LogConfig(); /// /// 设置日志记录器实例 /// /// 要设置的日志记录器,如果为 null 则使用默认的ConsoleLogger public static void SetLogger(ILog? logger) { Instance = logger ?? new ConsoleLogger(); } /// /// 使用日志工厂创建日志记录器 /// /// 日志工厂实例 public static void SetLoggerFactory(ILoggerFactory factory) { _factory = factory ?? throw new ArgumentNullException(nameof(factory)); Instance = _factory.CreateGlobalLogger(); } /// /// 使用日志配置初始化日志系统 /// /// 日志配置 public static void Initialize(LogConfig config) { _config = config ?? throw new ArgumentNullException(nameof(config)); _factory = new LoggerFactory(config); Instance = _factory.CreateGlobalLogger(); } /// /// 快速配置日志系统 /// /// 最小日志级别(默认为Info) /// 是否启用控制台输出(默认为true) /// 是否使用彩色输出(默认为true) /// 是否启用文件输出(默认为false) /// 日志文件路径(可选) public static void Configure( LogLevel minLevel = LogLevel.Info, bool enableConsole = true, bool useColors = true, bool enableFile = false, string? logFilePath = null) { var config = new LogConfig { DefaultMinLevel = minLevel, EnableConsole = enableConsole, UseColors = useColors, EnableFile = enableFile, LogFilePath = logFilePath }; Initialize(config); } /// /// 创建指定类别的日志记录器 /// /// 日志类别 /// 日志记录器实例 public static ILog CreateLogger(string category) { if (_factory != null) { return _factory.Create(category); } // 如果没有设置工厂,使用默认配置 return new ConsoleLogger(category, Config.GetCategoryLevel(category)); } /// /// 检查指定日志级别是否启用 /// /// 要检查的日志级别 /// 如果指定级别已启用则返回 true,否则返回 false public static bool IsEnabled(LogLevel level) => Instance.IsEnabled(level); /// /// 记录信息级别日志 /// /// 日志消息 /// 日志上下文信息(可选) public static void Info(string msg, object? ctx = null) => Instance.Log(LogLevel.Info, msg, null, ctx); /// /// 记录错误级别日志 /// /// 日志消息 /// 相关异常对象(可选) /// 日志上下文信息(可选) public static void Error(string msg, Exception? ex = null, object? ctx = null) => Instance.Log(LogLevel.Error, msg, ex, ctx); /// /// 记录调试级别日志 /// /// 日志消息 /// 日志上下文信息(可选) public static void Debug(string msg, object? ctx = null) => Instance.Log(LogLevel.Debug, msg, null, ctx); /// /// 记录跟踪级别日志 /// /// 日志消息 /// 日志上下文信息(可选) public static void Trace(string msg, object? ctx = null) => Instance.Log(LogLevel.Trace, msg, null, ctx); /// /// 记录警告级别日志 /// /// 日志消息 /// 日志上下文信息(可选) public static void Warn(string msg, object? ctx = null) => Instance.Log(LogLevel.Warning, msg, null, ctx); /// /// 记录致命错误级别日志 /// /// 日志消息 /// 日志上下文信息(可选) public static void Fatal(string msg, object? ctx = null) => Instance.Log(LogLevel.Fatal, msg, null, ctx); }