diff --git a/GFramework.Core.Abstractions/logging/ILoggerFactory.cs b/GFramework.Core.Abstractions/logging/ILoggerFactory.cs index af7c876..f0e0a6d 100644 --- a/GFramework.Core.Abstractions/logging/ILoggerFactory.cs +++ b/GFramework.Core.Abstractions/logging/ILoggerFactory.cs @@ -9,6 +9,7 @@ public interface ILoggerFactory /// 根据指定的名称获取日志记录器实例 /// /// 日志记录器的名称 + /// 最小日志级别 /// 指定名称的日志记录器实例 - ILogger GetLogger(string name); + ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info); } \ No newline at end of file diff --git a/GFramework.Core.Abstractions/logging/ILoggerFactoryProvider.cs b/GFramework.Core.Abstractions/logging/ILoggerFactoryProvider.cs new file mode 100644 index 0000000..8471658 --- /dev/null +++ b/GFramework.Core.Abstractions/logging/ILoggerFactoryProvider.cs @@ -0,0 +1,15 @@ +namespace GFramework.Core.Abstractions.logging; + +/// +/// 定义日志工厂提供者的接口,用于创建具有指定名称和最小日志级别的日志记录器 +/// +public interface ILoggerFactoryProvider +{ + /// + /// 创建一个日志记录器实例 + /// + /// 日志记录器的名称,用于标识特定的日志源 + /// 日志记录器的最小日志级别,低于此级别的日志消息将被忽略 + /// 配置了指定名称和最小日志级别的ILogger实例 + ILogger CreateLogger(string name, LogLevel minLevel); +} \ No newline at end of file diff --git a/GFramework.Core/logging/ConsoleLoggerFactory.cs b/GFramework.Core/logging/ConsoleLoggerFactory.cs index 711a02b..e8f2481 100644 --- a/GFramework.Core/logging/ConsoleLoggerFactory.cs +++ b/GFramework.Core/logging/ConsoleLoggerFactory.cs @@ -11,9 +11,10 @@ public class ConsoleLoggerFactory : ILoggerFactory /// 获取指定名称的控制台日志记录器实例 /// /// 日志记录器的名称 + /// 日志记录器的最小日志级别 /// 控制台日志记录器实例 - public ILogger GetLogger(string name) + public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info) { - return new ConsoleLogger(name); + return new ConsoleLogger(name, minLevel); } } \ No newline at end of file diff --git a/GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs b/GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs new file mode 100644 index 0000000..5da073e --- /dev/null +++ b/GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs @@ -0,0 +1,18 @@ +using GFramework.Core.Abstractions.logging; + +namespace GFramework.Core.logging; + +/// +/// 控制台日志记录器工厂提供程序,用于创建控制台日志记录器实例 +/// +public sealed class ConsoleLoggerFactoryProvider : ILoggerFactoryProvider +{ + /// + /// 创建一个日志记录器实例 + /// + /// 日志记录器的名称,用于标识特定的日志源 + /// 日志记录器的最小日志级别,低于此级别的日志消息将被忽略 + /// 配置了指定名称和最小日志级别的ILogger实例 + public ILogger CreateLogger(string name, LogLevel minLevel) + => new ConsoleLoggerFactory().GetLogger(name, minLevel); +} \ No newline at end of file diff --git a/GFramework.Core/logging/LoggerFactoryResolver.cs b/GFramework.Core/logging/LoggerFactoryResolver.cs new file mode 100644 index 0000000..5cabcf0 --- /dev/null +++ b/GFramework.Core/logging/LoggerFactoryResolver.cs @@ -0,0 +1,18 @@ +using GFramework.Core.Abstractions.logging; + +namespace GFramework.Core.logging; + +/// +/// 日志工厂提供程序解析器,用于管理和提供日志工厂提供程序实例 +/// +public static class LoggerFactoryResolver +{ + /// + /// 获取或设置当前的日志工厂提供程序 + /// + /// + /// 日志工厂提供程序实例,默认为控制台日志工厂提供程序 + /// + public static ILoggerFactoryProvider Provider { get; set; } + = new ConsoleLoggerFactoryProvider(); +} \ No newline at end of file diff --git a/GFramework.Core/logging/NoopLoggerFactory.cs b/GFramework.Core/logging/NoopLoggerFactory.cs index 14d8628..1d493e6 100644 --- a/GFramework.Core/logging/NoopLoggerFactory.cs +++ b/GFramework.Core/logging/NoopLoggerFactory.cs @@ -11,8 +11,9 @@ public class NoopLoggerFactory : ILoggerFactory /// 获取指定名称的无操作日志记录器 /// /// 日志记录器的名称 + /// 日志记录器的最小日志级别 /// 返回一个NoopLogger实例,该实例不执行任何实际的日志记录操作 - public ILogger GetLogger(string name) + public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info) { return new NoopLogger(); } diff --git a/GFramework.Godot/logging/GodotLoggerFactory.cs b/GFramework.Godot/logging/GodotLoggerFactory.cs index dda8610..e8a8347 100644 --- a/GFramework.Godot/logging/GodotLoggerFactory.cs +++ b/GFramework.Godot/logging/GodotLoggerFactory.cs @@ -12,8 +12,8 @@ public class GodotLoggerFactory : ILoggerFactory /// /// 日志记录器的名称 /// 返回GodotLogger类型的日志记录器实例 - public ILogger GetLogger(string name) + public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info) { - return new GodotLogger(name); + return new GodotLogger(name, minLevel); } } \ No newline at end of file diff --git a/GFramework.Godot/logging/GodotLoggerFactoryProvider.cs b/GFramework.Godot/logging/GodotLoggerFactoryProvider.cs new file mode 100644 index 0000000..13b629f --- /dev/null +++ b/GFramework.Godot/logging/GodotLoggerFactoryProvider.cs @@ -0,0 +1,18 @@ +using GFramework.Core.Abstractions.logging; + +namespace GFramework.Godot.logging; + +/// +/// Godot日志工厂提供程序,用于创建Godot日志记录器实例 +/// +public sealed class GodotLoggerFactoryProvider : ILoggerFactoryProvider +{ + /// + /// 创建指定名称和最小日志级别的日志记录器 + /// + /// 日志记录器的名称 + /// 日志记录器的最小日志级别 + /// 返回配置好的Godot日志记录器实例 + public ILogger CreateLogger(string name, LogLevel minLevel) + => new GodotLoggerFactory().GetLogger(name, minLevel); +} \ No newline at end of file diff --git a/GFramework.SourceGenerators.Abstractions/GFramework.SourceGenerators.Abstractions.csproj b/GFramework.SourceGenerators.Abstractions/GFramework.SourceGenerators.Abstractions.csproj index f7470af..fe720ee 100644 --- a/GFramework.SourceGenerators.Abstractions/GFramework.SourceGenerators.Abstractions.csproj +++ b/GFramework.SourceGenerators.Abstractions/GFramework.SourceGenerators.Abstractions.csproj @@ -14,4 +14,7 @@ + + + diff --git a/GFramework.SourceGenerators.Abstractions/logging/LogAttribute.cs b/GFramework.SourceGenerators.Abstractions/logging/LogAttribute.cs index 52e7325..890401f 100644 --- a/GFramework.SourceGenerators.Abstractions/logging/LogAttribute.cs +++ b/GFramework.SourceGenerators.Abstractions/logging/LogAttribute.cs @@ -1,5 +1,6 @@ #nullable enable using System; +using GFramework.Core.Abstractions.logging; namespace GFramework.SourceGenerators.Abstractions.logging; @@ -37,4 +38,7 @@ public sealed class LogAttribute : Attribute /// 访问修饰符 public string AccessModifier { get; set; } = "private"; + + /// 最小日志级别 + public LogLevel MinLevel { get; set; } = LogLevel.Info; } \ No newline at end of file