mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 19:03:29 +08:00
- 将Source Generators概述文档从overview重命名为index - 更新所有相关文档中的链接指向新的index文件 - 移除Godot文档中的许可证和版本信息冗余内容 - 统一Godot版本要求从4.5.1+到4.6 - 删除各模块文档末尾的相关链接部分 - 优化文档结构提升可读性
161 lines
2.8 KiB
Markdown
161 lines
2.8 KiB
Markdown
# 日志生成器
|
||
|
||
> 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<MyService>();
|
||
}
|
||
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)
|