51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# ILogSink
|
||
|
||
**命名空间**: `XCEngine::Debug`
|
||
|
||
**类型**: `class (abstract)`
|
||
|
||
**头文件**: `XCEngine/Debug/ILogSink.h`
|
||
|
||
**描述**: 定义日志输出目标的最小接口。
|
||
|
||
## 概述
|
||
|
||
`ILogSink` 把“日志生产”与“日志落地”分离开来。`Logger` 只负责构造 `LogEntry`、做全局过滤并分发,而真正的输出策略交给 sink 实现决定。
|
||
|
||
这类接口的意义在于:
|
||
|
||
- 可以同时输出到控制台、文件、编辑器面板或远程通道。
|
||
- 不需要让业务模块直接依赖具体输出媒介。
|
||
- 便于在测试中插入自定义 sink 验证日志行为。
|
||
|
||
## 契约
|
||
|
||
- [Log](Log.md) 必须接收一条已经构造好的 `LogEntry` 并执行输出。
|
||
- [Flush](Flush.md) 用于把 sink 内部缓冲显式落地。
|
||
- [Destructor](Destructor.md) 必须为虚析构,以便通过基类指针安全释放派生对象。
|
||
|
||
## 线程语义
|
||
|
||
- `ILogSink` 不承诺任何线程安全保证。
|
||
- 具体线程语义由实现类与调用方共同决定。
|
||
- 在 XCEngine 当前实现中,`Logger` 会在互斥区内调用 sink,因此“通过 `Logger` 分发”是串行的。
|
||
|
||
## 已知实现
|
||
|
||
- [ConsoleLogSink](../ConsoleLogSink/ConsoleLogSink.md)
|
||
- [FileLogSink](../FileLogSink/FileLogSink.md)
|
||
|
||
## 公开方法
|
||
|
||
| 方法 | 说明 |
|
||
|------|------|
|
||
| [Destructor](Destructor.md) | 虚析构函数。 |
|
||
| [Log](Log.md) | 输出一条日志记录。 |
|
||
| [Flush](Flush.md) | 刷新 sink 内部缓冲。 |
|
||
|
||
## 相关文档
|
||
|
||
- [当前模块](../Debug.md)
|
||
- [Logger](../Logger/Logger.md)
|
||
- [Logging Architecture](../../../_guides/Debug/Logging-Architecture.md)
|