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(null, LogLevel.Info);
///
/// 获取当前的日志配置
///
public static LogConfig Config => _config ??= new LogConfig();
///
/// 设置日志记录器实例
///
/// 要设置的日志记录器,如果为 null 则使用默认的ConsoleLogger
public static void SetLogger(ILog? logger)
{
Instance = logger ?? new ConsoleLogger(null, LogLevel.Info);
}
///
/// 使用日志工厂创建日志记录器
///
/// 日志工厂实例
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);
}