spdlog中使用rotating_logger_mt函数每天新建log文件并储存log
时间: 2023-08-07 17:05:04 浏览: 278
日志输出库spdlog
要实现每天新建log文件并储存log,可以使用`daily_logger`,它是spdlog库提供的另一个日志记录器。
下面是一个使用`daily_logger`的示例:
```cpp
#include <spdlog/spdlog.h>
#include <spdlog/sinks/daily_file_sink.h>
int main()
{
auto daily_logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.log", 0, 0);
daily_logger->info("This is a daily logger message");
return 0;
}
```
在上面的示例中,我们创建了一个名为`daily_logger`的日志记录器,并使用`daily_file_sink`作为日志输出。日志信息会被写入到`logs/daily.log`文件中,并在每天的零点自动创建一个新的日志文件。第三个参数是日志文件的滚动时间(单位为小时),在上面的示例中我们设置为0,表示在每天的零点滚动日志文件。第四个参数是日志文件的最大数量,我们也将其设置为0,表示不限制日志文件数量。
需要注意的是,使用`daily_logger`时,要注意时区的设置,否则可能因为时区不同而导致日志滚动的时间不正确。可以使用`spdlog::set_pattern()`和`spdlog::set_time_zone()`函数来设置日志的格式和时区。例如,要将时区设置为东8区,可以这样写:
```cpp
#include <spdlog/spdlog.h>
#include <spdlog/sinks/daily_file_sink.h>
int main()
{
auto daily_logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.log", 0, 0);
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e %z] [%^%l%$] %v");
spdlog::set_time_zone(spdlog::details::make_unique<spdlog::sinks::localtime_zone>());
daily_logger->info("This is a daily logger message");
return 0;
}
```
在上面的示例中,我们使用`spdlog::set_pattern()`函数设置日志的格式,使用`spdlog::set_time_zone()`函数将时区设置为本地时区。
阅读全文