diff --git a/GFramework.Core/logging/ILog.cs b/GFramework.Core/logging/ILog.cs
new file mode 100644
index 0000000..0afc49d
--- /dev/null
+++ b/GFramework.Core/logging/ILog.cs
@@ -0,0 +1,28 @@
+namespace GFramework.Core.logging;
+
+///
+/// 定义日志记录接口,提供日志记录和级别检查功能
+///
+public interface ILog
+{
+ ///
+ /// 记录指定级别的日志消息
+ ///
+ /// 日志级别
+ /// 日志消息内容
+ /// 可选的异常对象,默认为null
+ /// 可选的上下文对象,默认为null
+ void Log(
+ LogLevel level,
+ string message,
+ Exception? exception = null,
+ object? context = null
+ );
+
+ ///
+ /// 检查指定日志级别是否已启用
+ ///
+ /// 要检查的日志级别
+ /// 如果指定级别已启用则返回true,否则返回false
+ bool IsEnabled(LogLevel level);
+}
diff --git a/GFramework.Core/logging/ILoggerFactory.cs b/GFramework.Core/logging/ILoggerFactory.cs
new file mode 100644
index 0000000..2de452e
--- /dev/null
+++ b/GFramework.Core/logging/ILoggerFactory.cs
@@ -0,0 +1,15 @@
+namespace GFramework.Core.logging;
+
+///
+/// 定义日志工厂接口,用于创建日志记录器实例
+///
+public interface ILoggerFactory
+{
+ ///
+ /// 创建指定类别的日志记录器实例
+ ///
+ /// 日志类别,用于区分不同的日志源
+ /// 返回指定类别的日志记录器实例
+ ILog Create(string category);
+}
+
diff --git a/GFramework.Core/logging/Log.cs b/GFramework.Core/logging/Log.cs
new file mode 100644
index 0000000..0488bab
--- /dev/null
+++ b/GFramework.Core/logging/Log.cs
@@ -0,0 +1,78 @@
+namespace GFramework.Core.logging;
+
+///
+/// 日志记录的静态类,提供全局日志记录功能
+///
+public static class Log
+{
+ ///
+ /// 获取或设置当前的日志记录器实例
+ /// 默认使用 NullLogger,不输出任何日志
+ ///
+ public static ILog Instance { get; private set; } = new NullLogger();
+
+ ///
+ /// 设置日志记录器实例
+ ///
+ /// 要设置的日志记录器,如果为 null 则使用 NullLogger
+ public static void SetLogger(ILog? logger)
+ {
+ Instance = logger ?? new NullLogger();
+ }
+
+ ///
+ /// 检查指定日志级别是否启用
+ ///
+ /// 要检查的日志级别
+ /// 如果指定级别已启用则返回 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);
+}
diff --git a/GFramework.Core/logging/LogLevel.cs b/GFramework.Core/logging/LogLevel.cs
new file mode 100644
index 0000000..a9469a6
--- /dev/null
+++ b/GFramework.Core/logging/LogLevel.cs
@@ -0,0 +1,32 @@
+namespace GFramework.Core.logging;
+
+///
+/// 定义日志级别的枚举,用于标识不同严重程度的日志消息
+///
+public enum LogLevel
+{
+ ///
+ /// 跟踪级别,用于详细的程序执行流程信息
+ ///
+ Trace,
+ ///
+ /// 调试级别,用于调试过程中的详细信息
+ ///
+ Debug,
+ ///
+ /// 信息级别,用于一般性的程序运行信息
+ ///
+ Info,
+ ///
+ /// 警告级别,用于表示可能的问题或异常情况
+ ///
+ Warning,
+ ///
+ /// 错误级别,用于表示错误但程序仍可继续运行的情况
+ ///
+ Error,
+ ///
+ /// 致命级别,用于表示严重的错误导致程序无法继续运行
+ ///
+ Fatal
+}
diff --git a/GFramework.Core/logging/NullLogger.cs b/GFramework.Core/logging/NullLogger.cs
new file mode 100644
index 0000000..08e33d7
--- /dev/null
+++ b/GFramework.Core/logging/NullLogger.cs
@@ -0,0 +1,24 @@
+namespace GFramework.Core.logging;
+
+///
+/// 空日志记录器实现,用于禁用日志记录功能
+///
+internal sealed class NullLogger : ILog
+{
+ ///
+ /// 记录日志消息(空实现,不执行任何操作)
+ ///
+ /// 日志级别
+ /// 日志消息
+ /// 相关异常对象(可选)
+ /// 日志上下文信息(可选)
+ public void Log(LogLevel level, string message, Exception? exception, object? context) { }
+
+ ///
+ /// 检查指定日志级别是否启用
+ ///
+ /// 要检查的日志级别
+ /// 始终返回 false,表示所有日志级别都被禁用
+ public bool IsEnabled(LogLevel level) => false;
+}
+
diff --git a/GFramework.Godot/logging/GodotLogger.cs b/GFramework.Godot/logging/GodotLogger.cs
new file mode 100644
index 0000000..6c0503b
--- /dev/null
+++ b/GFramework.Godot/logging/GodotLogger.cs
@@ -0,0 +1,49 @@
+using GFramework.Core.logging;
+using Godot;
+
+namespace GFramework.Godot.logging;
+
+///
+/// Godot平台的日志记录器实现
+///
+public sealed class GodotLogger : ILog
+{
+ ///
+ /// 记录日志消息到Godot控制台
+ ///
+ /// 日志级别
+ /// 日志消息
+ /// 关联的异常对象
+ /// 日志上下文
+ public void Log(LogLevel level, string message, Exception? exception, object? context)
+ {
+ var prefix = $"[{level}]";
+
+ if (exception != null)
+ message += $"\n{exception}";
+
+ switch (level)
+ {
+ case LogLevel.Error:
+ case LogLevel.Fatal:
+ GD.PrintErr(prefix, message);
+ break;
+ case LogLevel.Warning:
+ GD.PushWarning($"{prefix} {message}");
+ break;
+ case LogLevel.Trace:
+ case LogLevel.Debug:
+ case LogLevel.Info:
+ default:
+ GD.Print(prefix, message);
+ break;
+ }
+ }
+
+ ///
+ /// 检查指定日志级别是否启用
+ ///
+ /// 日志级别
+ /// 始终返回 true
+ public bool IsEnabled(LogLevel level) => true;
+}