diff --git a/GFramework.Game/GFramework.Game.csproj b/GFramework.Game/GFramework.Game.csproj
index 8e4d4d0..271f741 100644
--- a/GFramework.Game/GFramework.Game.csproj
+++ b/GFramework.Game/GFramework.Game.csproj
@@ -6,11 +6,6 @@
enable
enable
-
-
-
-
-
diff --git a/GFramework.Generator.Attributes/generator/logging/LogAttribute.cs b/GFramework.Generator.Attributes/generator/logging/LogAttribute.cs
index d8f73cf..d933912 100644
--- a/GFramework.Generator.Attributes/generator/logging/LogAttribute.cs
+++ b/GFramework.Generator.Attributes/generator/logging/LogAttribute.cs
@@ -10,7 +10,7 @@ namespace GFramework.Generator.Attributes.generator.logging;
public sealed class LogAttribute : Attribute
{
/// 日志分类名(默认使用类名)
- public string? Category { get; set; }
+ public string? Name { get; set; }
/// 生成字段名
public string FieldName { get; set; } = "_log";
@@ -24,9 +24,9 @@ public sealed class LogAttribute : Attribute
///
/// 初始化 LogAttribute 类的新实例
///
- /// 日志分类名,默认使用类名
- public LogAttribute(string? category)
+ /// 日志分类名,默认使用类名
+ public LogAttribute(string? name)
{
- Category = category;
+ Name = name;
}
}
\ No newline at end of file
diff --git a/GFramework.Generator/generator/logging/LoggerGenerator.cs b/GFramework.Generator/generator/logging/LoggerGenerator.cs
index a21f8f6..766558f 100644
--- a/GFramework.Generator/generator/logging/LoggerGenerator.cs
+++ b/GFramework.Generator/generator/logging/LoggerGenerator.cs
@@ -9,6 +9,9 @@ using Microsoft.CodeAnalysis.Text;
namespace GFramework.Generator.generator.logging
{
+ ///
+ /// 日志生成器,用于为标记了LogAttribute的类自动生成日志字段
+ ///
[Generator]
public sealed class LoggerGenerator : IIncrementalGenerator
{
@@ -17,6 +20,10 @@ namespace GFramework.Generator.generator.logging
private const string AttributeShortName = "LogAttribute";
private const string AttributeShortNameWithoutSuffix = "Log";
+ ///
+ /// 初始化生成器,设置语法过滤和代码生成逻辑
+ ///
+ /// 增量生成器初始化上下文
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// 1. 语法过滤:快速筛选候选类
@@ -78,6 +85,11 @@ namespace GFramework.Generator.generator.logging
});
}
+ ///
+ /// 获取类符号上的LogAttribute特性
+ ///
+ /// 类符号
+ /// LogAttribute特性数据,如果不存在则返回null
private static AttributeData? GetAttribute(INamedTypeSymbol classSymbol)
{
return classSymbol.GetAttributes().FirstOrDefault(a =>
@@ -91,6 +103,12 @@ namespace GFramework.Generator.generator.logging
});
}
+ ///
+ /// 生成日志字段代码
+ ///
+ /// 类符号
+ /// LogAttribute特性数据
+ /// 生成的C#代码字符串
private static string Generate(INamedTypeSymbol classSymbol, AttributeData attr)
{
var ns = classSymbol.ContainingNamespace.IsGlobalNamespace
@@ -99,15 +117,15 @@ namespace GFramework.Generator.generator.logging
var className = classSymbol.Name;
- // === 解析 Category ===
- var category = className; // 默认使用类名
+ // === 解析 Name ===
+ var name = className; // 默认使用类名
// 检查是否有构造函数参数
if (attr.ConstructorArguments.Length > 0)
{
var argValue = attr.ConstructorArguments[0].Value;
- category = argValue switch
+ name = argValue switch
{
// 情况 1: 参数存在,但值为 null (例如 [Log] 且构造函数有默认值 null)
null => className,
@@ -143,8 +161,8 @@ namespace GFramework.Generator.generator.logging
sb.AppendLine(" {");
sb.AppendLine($" /// Auto-generated logger");
sb.AppendLine(
- $" {access} {staticKeyword}readonly ILog {fieldName} = " +
- $"Log.CreateLogger(\"{category}\");");
+ $" {access} {staticKeyword}readonly ILogger {fieldName} = " +
+ $"new ConsoleLoggerFactory.GetLogger(\"{name}\");");
sb.AppendLine(" }");
if (ns is not null)
@@ -153,9 +171,15 @@ namespace GFramework.Generator.generator.logging
return sb.ToString();
}
+ ///
+ /// 从特性数据中获取命名参数的值
+ ///
+ /// 特性数据
+ /// 参数名称
+ /// 参数值,如果不存在则返回null
private static object? GetNamedArg(AttributeData attr, string name)
{
return (from kv in attr.NamedArguments where kv.Key == name select kv.Value.Value).FirstOrDefault();
}
}
-}
\ No newline at end of file
+}