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