Files
XCEngine/docs/api/XCEngine/Debug/ConsoleLogSink/ConsoleLogSink.md

56 lines
2.1 KiB
Markdown
Raw Normal View History

2026-03-26 16:45:24 +08:00
# ConsoleLogSink
**命名空间**: `XCEngine::Debug`
**类型**: `class`
**头文件**: `XCEngine/Debug/ConsoleLogSink.h`
2026-03-26 17:21:44 +08:00
**描述**: 将日志输出到标准输出流,并在 Windows 上按级别着色。
2026-03-26 16:45:24 +08:00
## 概述
2026-03-26 17:21:44 +08:00
`ConsoleLogSink` 是最直接的调试输出目标,适合测试程序、命令行工具和开发期编辑器启动日志。它本身只关心“如何写到控制台”,不过滤 category也不处理文件、函数名和时间戳格式化以外的元数据。
2026-03-26 16:45:24 +08:00
2026-03-26 17:21:44 +08:00
当前实现中的关键行为:
2026-03-26 16:45:24 +08:00
2026-03-26 17:21:44 +08:00
- 日志格式固定为 `[LEVEL] [Category] message`
- 颜色输出只在 `_WIN32` 下生效;其它平台仍会输出文本,但不会着色。
- sink 自身维护一个最小级别阈值,可在 `Logger` 的全局过滤之后再做一次本地过滤。
2026-03-26 16:45:24 +08:00
2026-03-26 17:21:44 +08:00
## 生命周期
2026-03-26 16:45:24 +08:00
2026-03-26 17:21:44 +08:00
- [Constructor](Constructor.md) 创建 sink默认开启颜色输出最小级别为 `Verbose`
- [Destructor](Destructor.md) 无额外资源释放逻辑。
- [Flush](Flush.md) 手动刷新 `stdout`
## 线程语义
- `ConsoleLogSink` 自身没有加锁。
- 通过 `Logger` 调用时,实际输出发生在 `Logger` 的互斥区内,因此同一时刻只会有一个 sink 调用进入。
- 如果绕过 `Logger` 直接从多个线程调用 `Log`,线程安全由调用方自己保证。
## 公开方法
| 方法 | 说明 |
2026-03-26 16:45:24 +08:00
|------|------|
2026-03-26 17:21:44 +08:00
| [Constructor](Constructor.md) | 构造一个控制台日志 sink。 |
| [Destructor](Destructor.md) | 析构 sink。 |
| [Log](Log.md) | 将一条日志格式化写入 `stdout`。 |
| [Flush](Flush.md) | 刷新 `stdout`。 |
| [SetColorOutput](SetColorOutput.md) | 开关 Windows 控制台颜色。 |
| [SetMinimumLevel](SetMinimumLevel.md) | 设置 sink 级别阈值。 |
## 适用场景
- 单元测试与集成测试的即时输出。
- 编辑器或工具进程启动阶段的可见日志。
- 临时调试某个后端时,为 `Logger` 追加一个低成本输出目标。
2026-03-26 16:45:24 +08:00
## 相关文档
2026-03-26 17:21:44 +08:00
- [当前模块](../Debug.md)
- [Logger](../Logger/Logger.md)
- [ILogSink](../ILogSink/ILogSink.md)
- [Logging Architecture](../../../_guides/Debug/Logging-Architecture.md)