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

59 lines
1.2 KiB
Markdown
Raw Normal View History

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)