52 lines
1012 B
Markdown
52 lines
1012 B
Markdown
# FileLogSink::Log
|
|
|
|
将日志条目写入文件,并在失败时回退到 `stderr`。
|
|
|
|
```cpp
|
|
void Log(const LogEntry& entry) override;
|
|
```
|
|
|
|
## 行为说明
|
|
|
|
当前实现流程如下:
|
|
|
|
1. 如果文件未打开,先尝试按保存的路径重新打开。
|
|
2. 如果打开失败,把错误和原始日志写到 `stderr`,然后返回。
|
|
3. 把 `entry.timestamp` 按本地时间格式化为 `YYYY-MM-DD HH:MM:SS`。
|
|
4. 以 `[时间] [级别] [分类] message` 的形式写入文件。
|
|
5. 写入后立即 `Flush`。
|
|
|
|
当前不会写入:
|
|
|
|
- `file`
|
|
- `line`
|
|
- `function`
|
|
- `threadId`
|
|
|
|
## 参数
|
|
|
|
- `entry` - 待落盘的日志条目。
|
|
|
|
## 返回值
|
|
|
|
- 无。
|
|
|
|
## 线程语义
|
|
|
|
- sink 自身无锁。
|
|
- 通过 `Logger` 分发时为串行调用。
|
|
|
|
## 示例
|
|
|
|
```cpp
|
|
using namespace XCEngine::Debug;
|
|
|
|
Logger::Get().AddSink(std::make_unique<FileLogSink>("runtime.log"));
|
|
Logger::Get().Info(LogCategory::General, "Runtime started");
|
|
```
|
|
|
|
## 相关文档
|
|
|
|
- [返回类型总览](FileLogSink.md)
|
|
- [Flush](Flush.md)
|