mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 19:03:29 +08:00
- 将架构相关接口从 GFramework.Core 迁移至 GFramework.Core.Abstractions 项目 - 更新项目引用配置,添加对抽象层项目的项目引用 - 修正命名空间引用,使用新的抽象层命名空间 - 调整类型定义,将 List<T> 替换为更通用的 IList<T> 接口 - 修复控制器接口命名空间错误 - 添加必要的 using 语句以支持新的抽象层引用
79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using GFramework.Core.Abstractions.logging;
|
|
|
|
namespace GFramework.Core.logging;
|
|
|
|
/// <summary>
|
|
/// 控制台日志记录器
|
|
/// </summary>
|
|
public sealed class ConsoleLogger(
|
|
string? name = null,
|
|
LogLevel minLevel = LogLevel.Info,
|
|
TextWriter? writer = null,
|
|
bool useColors = true) : AbstractLogger(name ?? ILogger.RootLoggerName, minLevel)
|
|
{
|
|
private readonly bool _useColors = useColors && writer == Console.Out;
|
|
private readonly TextWriter _writer = writer ?? Console.Out;
|
|
|
|
/// <summary>
|
|
/// 写入日志消息到控制台
|
|
/// </summary>
|
|
/// <param name="level">日志级别</param>
|
|
/// <param name="message">日志消息</param>
|
|
/// <param name="exception">异常信息,可为空</param>
|
|
protected override void Write(LogLevel level, string message, Exception? exception)
|
|
{
|
|
var timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|
var levelStr = level.ToString().ToUpper().PadRight(7);
|
|
var log = $"[{timestamp}] {levelStr} [{Name()}] {message}";
|
|
|
|
// 添加异常信息到日志
|
|
if (exception != null) log += Environment.NewLine + exception;
|
|
|
|
if (_useColors)
|
|
WriteColored(level, log);
|
|
else
|
|
_writer.WriteLine(log);
|
|
}
|
|
|
|
#region Internal Core
|
|
|
|
/// <summary>
|
|
/// 以指定颜色写入日志消息
|
|
/// </summary>
|
|
/// <param name="level">日志级别</param>
|
|
/// <param name="message">日志消息</param>
|
|
private void WriteColored(LogLevel level, string message)
|
|
{
|
|
var original = Console.ForegroundColor;
|
|
try
|
|
{
|
|
Console.ForegroundColor = GetColor(level);
|
|
_writer.WriteLine(message);
|
|
}
|
|
finally
|
|
{
|
|
Console.ForegroundColor = original;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据日志级别获取对应的颜色
|
|
/// </summary>
|
|
/// <param name="level">日志级别</param>
|
|
/// <returns>控制台颜色</returns>
|
|
private static ConsoleColor GetColor(LogLevel level)
|
|
{
|
|
return level switch
|
|
{
|
|
LogLevel.Trace => ConsoleColor.DarkGray,
|
|
LogLevel.Debug => ConsoleColor.Cyan,
|
|
LogLevel.Info => ConsoleColor.White,
|
|
LogLevel.Warning => ConsoleColor.Yellow,
|
|
LogLevel.Error => ConsoleColor.Red,
|
|
LogLevel.Fatal => ConsoleColor.Magenta,
|
|
_ => ConsoleColor.White
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
} |