spdlog如何在程序启动一次就在指定目录下新建一个日志文件?
时间: 2024-02-13 21:01:34 浏览: 306
可以通过设置spdlog的daily_file_sink来实现在指定目录下每天新建一个日志文件。具体步骤如下:
1. 导入头文件:`#include "spdlog/sinks/daily_file_sink.h"`
2. 创建daily_file_sink对象,设置日志文件名、日志文件后缀名、日志文件目录和每天的开始时间。例如:
```cpp
auto daily_sink = std::make_shared<spdlog::sinks::daily_file_sink_mt>("log", "txt", 23, 59);
daily_sink->set_base_dir("logs");
```
其中,日志文件名为log,后缀名为txt,日志文件目录为logs,每天的开始时间为23:59。
3. 创建logger对象,将daily_file_sink对象添加到logger中。例如:
```cpp
auto logger = std::make_shared<spdlog::logger>("my_logger", daily_sink);
```
4. 设置logger的全局格式和日志级别。例如:
```cpp
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] [thread %t] %v");
spdlog::set_level(spdlog::level::trace);
```
5. 使用logger进行日志输出。例如:
```cpp
logger->info("Hello, world!");
```
这样,每天在指定目录下会自动创建一个新的日志文件,命名规则为日志文件名+日期+后缀名,例如logs/log20210722.txt。当日志文件大小超过最大值时,spdlog会自动创建一个新的日志文件,不会覆盖之前的日志文件。
阅读全文