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>
|
/// </summary>
|
||||||
/// <param name="name">日志记录器的名称</param>
|
/// <param name="name">日志记录器的名称</param>
|
||||||
|
/// <param name="minLevel">最小日志级别</param>
|
||||||
/// <returns>指定名称的日志记录器实例</returns>
|
/// <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>
|
/// </summary>
|
||||||
/// <param name="name">日志记录器的名称</param>
|
/// <param name="name">日志记录器的名称</param>
|
||||||
|
/// <param name="minLevel">日志记录器的最小日志级别</param>
|
||||||
/// <returns>控制台日志记录器实例</returns>
|
/// <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>
|
/// </summary>
|
||||||
/// <param name="name">日志记录器的名称</param>
|
/// <param name="name">日志记录器的名称</param>
|
||||||
|
/// <param name="minLevel">日志记录器的最小日志级别</param>
|
||||||
/// <returns>返回一个NoopLogger实例,该实例不执行任何实际的日志记录操作</returns>
|
/// <returns>返回一个NoopLogger实例,该实例不执行任何实际的日志记录操作</returns>
|
||||||
public ILogger GetLogger(string name)
|
public ILogger GetLogger(string name, LogLevel minLevel = LogLevel.Info)
|
||||||
{
|
{
|
||||||
return new NoopLogger();
|
return new NoopLogger();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,8 +12,8 @@ public class GodotLoggerFactory : ILoggerFactory
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">日志记录器的名称</param>
|
/// <param name="name">日志记录器的名称</param>
|
||||||
/// <returns>返回GodotLogger类型的日志记录器实例</returns>
|
/// <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>
|
<ItemGroup>
|
||||||
<Using Include="GFramework.SourceGenerators.Abstractions"/>
|
<Using Include="GFramework.SourceGenerators.Abstractions"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\GFramework.Core.Abstractions\GFramework.Core.Abstractions.csproj" PrivateAssets="all"/>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#nullable enable
|
#nullable enable
|
||||||
using System;
|
using System;
|
||||||
|
using GFramework.Core.Abstractions.logging;
|
||||||
|
|
||||||
namespace GFramework.SourceGenerators.Abstractions.logging;
|
namespace GFramework.SourceGenerators.Abstractions.logging;
|
||||||
|
|
||||||
@ -37,4 +38,7 @@ public sealed class LogAttribute : Attribute
|
|||||||
|
|
||||||
/// <summary>访问修饰符</summary>
|
/// <summary>访问修饰符</summary>
|
||||||
public string AccessModifier { get; set; } = "private";
|
public string AccessModifier { get; set; } = "private";
|
||||||
|
|
||||||
|
/// <summary>最小日志级别</summary>
|
||||||
|
public LogLevel MinLevel { get; set; } = LogLevel.Info;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user