mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
feat(logging): 添加日志级别配置和工厂提供程序
- 为 ILoggerFactory 接口添加 minLevel 参数支持 - 实现 ConsoleLoggerFactoryProvider 和 GodotLoggerFactoryProvider - 创建 LoggerFactoryResolver 用于管理日志工厂提供程序 - 为 NoopLoggerFactory 添加日志级别参数 - 在 LogAttribute 中添加 MinLevel 属性 - 更新项目引用以支持日志级别配置功能
This commit is contained in:
parent
42d6590edd
commit
435c3398fc
@ -9,6 +9,7 @@ public interface ILoggerFactory
|
||||
/// 根据指定的名称获取日志记录器实例
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称</param>
|
||||
/// <param name="minLevel">最小日志级别</param>
|
||||
/// <returns>指定名称的日志记录器实例</returns>
|
||||
ILogger GetLogger(string name);
|
||||
ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info);
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
namespace GFramework.Core.Abstractions.logging;
|
||||
|
||||
/// <summary>
|
||||
/// 定义日志工厂提供者的接口,用于创建具有指定名称和最小日志级别的日志记录器
|
||||
/// </summary>
|
||||
public interface ILoggerFactoryProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建一个日志记录器实例
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称,用于标识特定的日志源</param>
|
||||
/// <param name="minLevel">日志记录器的最小日志级别,低于此级别的日志消息将被忽略</param>
|
||||
/// <returns>配置了指定名称和最小日志级别的ILogger实例</returns>
|
||||
ILogger CreateLogger(string name, LogLevel minLevel);
|
||||
}
|
||||
@ -11,9 +11,10 @@ public class ConsoleLoggerFactory : ILoggerFactory
|
||||
/// 获取指定名称的控制台日志记录器实例
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称</param>
|
||||
/// <param name="minLevel">日志记录器的最小日志级别</param>
|
||||
/// <returns>控制台日志记录器实例</returns>
|
||||
public ILogger GetLogger(string name)
|
||||
public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info)
|
||||
{
|
||||
return new ConsoleLogger(name);
|
||||
return new ConsoleLogger(name, minLevel);
|
||||
}
|
||||
}
|
||||
18
GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs
Normal file
18
GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using GFramework.Core.Abstractions.logging;
|
||||
|
||||
namespace GFramework.Core.logging;
|
||||
|
||||
/// <summary>
|
||||
/// 控制台日志记录器工厂提供程序,用于创建控制台日志记录器实例
|
||||
/// </summary>
|
||||
public sealed class ConsoleLoggerFactoryProvider : ILoggerFactoryProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建一个日志记录器实例
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称,用于标识特定的日志源</param>
|
||||
/// <param name="minLevel">日志记录器的最小日志级别,低于此级别的日志消息将被忽略</param>
|
||||
/// <returns>配置了指定名称和最小日志级别的ILogger实例</returns>
|
||||
public ILogger CreateLogger(string name, LogLevel minLevel)
|
||||
=> new ConsoleLoggerFactory().GetLogger(name, minLevel);
|
||||
}
|
||||
18
GFramework.Core/logging/LoggerFactoryResolver.cs
Normal file
18
GFramework.Core/logging/LoggerFactoryResolver.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using GFramework.Core.Abstractions.logging;
|
||||
|
||||
namespace GFramework.Core.logging;
|
||||
|
||||
/// <summary>
|
||||
/// 日志工厂提供程序解析器,用于管理和提供日志工厂提供程序实例
|
||||
/// </summary>
|
||||
public static class LoggerFactoryResolver
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置当前的日志工厂提供程序
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// 日志工厂提供程序实例,默认为控制台日志工厂提供程序
|
||||
/// </value>
|
||||
public static ILoggerFactoryProvider Provider { get; set; }
|
||||
= new ConsoleLoggerFactoryProvider();
|
||||
}
|
||||
@ -11,8 +11,9 @@ public class NoopLoggerFactory : ILoggerFactory
|
||||
/// 获取指定名称的无操作日志记录器
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称</param>
|
||||
/// <param name="minLevel">日志记录器的最小日志级别</param>
|
||||
/// <returns>返回一个NoopLogger实例,该实例不执行任何实际的日志记录操作</returns>
|
||||
public ILogger GetLogger(string name)
|
||||
public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info)
|
||||
{
|
||||
return new NoopLogger();
|
||||
}
|
||||
|
||||
@ -12,8 +12,8 @@ public class GodotLoggerFactory : ILoggerFactory
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称</param>
|
||||
/// <returns>返回GodotLogger类型的日志记录器实例</returns>
|
||||
public ILogger GetLogger(string name)
|
||||
public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info)
|
||||
{
|
||||
return new GodotLogger(name);
|
||||
return new GodotLogger(name, minLevel);
|
||||
}
|
||||
}
|
||||
18
GFramework.Godot/logging/GodotLoggerFactoryProvider.cs
Normal file
18
GFramework.Godot/logging/GodotLoggerFactoryProvider.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using GFramework.Core.Abstractions.logging;
|
||||
|
||||
namespace GFramework.Godot.logging;
|
||||
|
||||
/// <summary>
|
||||
/// Godot日志工厂提供程序,用于创建Godot日志记录器实例
|
||||
/// </summary>
|
||||
public sealed class GodotLoggerFactoryProvider : ILoggerFactoryProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建指定名称和最小日志级别的日志记录器
|
||||
/// </summary>
|
||||
/// <param name="name">日志记录器的名称</param>
|
||||
/// <param name="minLevel">日志记录器的最小日志级别</param>
|
||||
/// <returns>返回配置好的Godot日志记录器实例</returns>
|
||||
public ILogger CreateLogger(string name, LogLevel minLevel)
|
||||
=> new GodotLoggerFactory().GetLogger(name, minLevel);
|
||||
}
|
||||
@ -14,4 +14,7 @@
|
||||
<ItemGroup>
|
||||
<Using Include="GFramework.SourceGenerators.Abstractions"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\GFramework.Core.Abstractions\GFramework.Core.Abstractions.csproj" PrivateAssets="all"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -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
|
||||
|
||||
/// <summary>访问修饰符</summary>
|
||||
public string AccessModifier { get; set; } = "private";
|
||||
|
||||
/// <summary>最小日志级别</summary>
|
||||
public LogLevel MinLevel { get; set; } = LogLevel.Info;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user