2026-03-26 16:45:24 +08:00
|
|
|
# Logger::AddSink
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
把一个日志输出目标注册到全局 `Logger`。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
void AddSink(std::unique_ptr<ILogSink> sink);
|
|
|
|
|
```
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
## 行为说明
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
当前实现会在互斥区内把 `sink` 移入内部 `std::vector<std::unique_ptr<ILogSink>>`。注册后:
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
- `Logger` 接管对象生命周期。
|
|
|
|
|
- 之后的每次 `Log` 都会把日志分发给该 sink。
|
|
|
|
|
- 不会因为未初始化而失败;`AddSink` 本身不依赖 `Initialize`。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
## 参数
|
|
|
|
|
|
|
|
|
|
- `sink` - 新的日志输出目标,所有权会转移给 `Logger`。
|
|
|
|
|
|
|
|
|
|
## 返回值
|
|
|
|
|
|
|
|
|
|
- 无。
|
|
|
|
|
|
|
|
|
|
## 线程语义
|
|
|
|
|
|
|
|
|
|
- 当前实现对 sink 列表写入加锁。
|
|
|
|
|
|
|
|
|
|
## 示例
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
```cpp
|
2026-03-26 17:21:44 +08:00
|
|
|
using namespace XCEngine::Debug;
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
Logger::Get().Initialize();
|
|
|
|
|
Logger::Get().AddSink(std::make_unique<ConsoleLogSink>());
|
|
|
|
|
Logger::Get().AddSink(std::make_unique<FileLogSink>("engine.log"));
|
2026-03-26 16:45:24 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
2026-03-26 17:21:44 +08:00
|
|
|
- [返回类型总览](Logger.md)
|
|
|
|
|
- [RemoveSink](RemoveSink.md)
|
|
|
|
|
- [ILogSink](../ILogSink/ILogSink.md)
|