# 日志生成器 > GFramework.SourceGenerators 自动生成日志代码,减少样板代码 ## 概述 日志生成器是一个 Source Generator,它会自动为标记了 `[Log]` 特性的类生成 Logger 字段和日志方法调用。这消除了手动编写日志代码的需要,让开发者专注于业务逻辑。 ## 基本用法 ### 标记类 ```csharp using GFramework.SourceGenerators.Attributes; [Log] public partial class MyService { public void DoSomething() { // 自动生成 Logger 字段 // 自动生成日志调用 Logger.Info("执行操作"); } } ``` ### 生成代码 上面的代码会被编译时转换为: ```csharp public partial class MyService { // 自动生成的字段 [CompilerGenerated] private ILogger _logger; // 自动生成的属性 [CompilerGenerated] public ILogger Logger { get { if (_logger == null) { _logger = LoggerFactory.CreateLogger(); } return _logger; } } } ``` ## 日志级别 生成的日志方法支持多种级别: ```csharp [Log] public partial class MyClass { public void Example() { // 调试信息 Logger.Debug($"调试信息: {value}"); // 普通信息 Logger.Info("操作成功"); // 警告 Logger.Warning($"警告: {message}"); // 错误 Logger.Error($"错误: {ex.Message}"); // 严重错误 Logger.Critical("系统故障"); } } ``` ## 自定义日志类别 ```csharp [Log(LogCategory.Gameplay)] public partial class GameplaySystem { // 日志会标记为 Gameplay 类别 public void Update() { Logger.Info("游戏逻辑更新"); } } ``` ## 与其他模块集成 ### 与 Godot 集成 ```csharp [Log] [ContextAware] public partial class GodotController : Node { public override void _Ready() { Logger.Info("控制器已准备就绪"); } } ``` ### 与架构集成 ```csharp [Log] public partial class MySystem : AbstractSystem { protected override void OnInit() { Logger.Info("系统初始化"); } } ``` ## 配置选项 ### 禁用自动生成 ```csharp // 禁用自动日志调用生成 [Log(AutoLog = false)] public partial class MyClass { // 仍会生成 Logger 字段,但不会自动生成日志调用 public void DoSomething() { // 需要手动调用 Logger Logger.Info("手动日志"); } } ``` ### 自定义字段名称 ```csharp [Log(FieldName = "_customLogger")] public partial class MyClass { // Logger 字段名称为 _customLogger } ``` --- **相关文档**: - [Source Generators 概述](./index) - [枚举扩展生成器](./enum-generator) - [规则生成器](./rule-generator)