GwWuYou 6b8a8660ef feat(logging): 更新 Godot 日志记录器实现
- 添加时间戳格式化到日志前缀中
- 为日志级别字符串添加右对齐格式
- 将异常信息直接追加到日志消息中
- 更新致命错误、错误、警告和普通日志的输出方法
- 添加了更详细的日志格式包括时间戳、级别和名称
2026-01-02 12:52:58 +08:00

45 lines
1.3 KiB
C#

using GFramework.Core.Abstractions.logging;
using GFramework.Core.logging;
using Godot;
namespace GFramework.Godot.logging;
/// <summary>
/// Godot平台的日志记录器实现
/// </summary>
public sealed class GodotLogger(
string? name = null,
LogLevel minLevel = LogLevel.Info) : AbstractLogger(name ?? RootLoggerName, minLevel)
{
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 logPrefix = $"[{timestamp}] {levelStr} [{Name()}]";
// 添加异常信息
if (exception != null)
{
message += "\n" + exception;
}
var logMessage = $"{logPrefix} {message}";
// 根据日志级别选择 Godot 输出方法
switch (level)
{
case LogLevel.Fatal:
GD.PushError(logMessage);
break;
case LogLevel.Error:
GD.PrintErr(logMessage);
break;
case LogLevel.Warning:
GD.PushWarning(logMessage);
break;
default: // Trace / Debug / Info
GD.Print(logMessage);
break;
}
}
}