2026-03-26 16:45:24 +08:00
|
|
|
|
# ConsoleLogSink::Log
|
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
|
将一条日志格式化后写到 `stdout`。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
void Log(const LogEntry& entry) override;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
|
## 行为说明
|
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
|
|
|
|
1. 如果 `entry.level < m_minimumLevel`,直接返回。
|
|
|
|
|
|
2. 在 Windows 且启用颜色输出时,根据 `entry.level` 设置控制台颜色。
|
|
|
|
|
|
3. 按 `[LEVEL] [Category] message` 的固定格式调用 `printf` 输出一行文本,并在 Windows 上恢复默认颜色。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
|
它不会输出:
|
|
|
|
|
|
|
|
|
|
|
|
- 时间戳
|
|
|
|
|
|
- 文件路径
|
|
|
|
|
|
- 行号
|
|
|
|
|
|
- 函数名
|
|
|
|
|
|
- 线程 ID
|
|
|
|
|
|
|
|
|
|
|
|
如果你需要这些元数据,必须实现自己的 sink,或者扩展当前 sink 的格式化逻辑。
|
|
|
|
|
|
|
|
|
|
|
|
## 参数
|
|
|
|
|
|
|
|
|
|
|
|
- `entry` - 待输出的日志条目。
|
|
|
|
|
|
|
|
|
|
|
|
## 返回值
|
|
|
|
|
|
|
|
|
|
|
|
- 无。
|
|
|
|
|
|
|
|
|
|
|
|
## 线程语义
|
|
|
|
|
|
|
|
|
|
|
|
- sink 自身不加锁。
|
|
|
|
|
|
- 通过 `Logger` 调用时,`Logger` 会在互斥区内串行分发。
|
|
|
|
|
|
|
|
|
|
|
|
## 示例
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
|
|
```cpp
|
2026-03-26 17:21:44 +08:00
|
|
|
|
using namespace XCEngine::Debug;
|
|
|
|
|
|
|
|
|
|
|
|
LogEntry entry{};
|
|
|
|
|
|
entry.level = LogLevel::Info;
|
|
|
|
|
|
entry.category = LogCategory::General;
|
|
|
|
|
|
entry.message = "Hello from ConsoleLogSink";
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
|
ConsoleLogSink sink;
|
|
|
|
|
|
sink.Log(entry);
|
2026-03-26 16:45:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
|
- [返回类型总览](ConsoleLogSink.md)
|
|
|
|
|
|
- [Flush](Flush.md)
|
|
|
|
|
|
- [SetMinimumLevel](SetMinimumLevel.md)
|