如何更改 spdlog 每日记录器中的默认滚动时间?
How to change the default rolling time in spdlog daily logger?
使用spdlog,如何更改每日记录器的默认滚动时间?
在以下示例中,滚动仅在午夜发生:
auto logger = spd::daily_logger_st("my_logger", "fl_log.txt");
目前没有直接的方法来更改每日记录器中的轮换时间 - 请打开一个问题 here..
一个快速的解决方法是将 _calc_midnight_tp()
函数修改为 return 所需的旋转时间,而不是 daily_file_sink class..[=15= 中的午夜]
例如,在凌晨 1 点而不是午夜轮换:
static std::chrono::system_clock::time_point _calc_midnight_tp()
{
using namespace std::chrono;
auto now = system_clock::now();
time_t tnow = std::chrono::system_clock::to_time_t(now);
tm date = spdlog::details::os::localtime(tnow);
date.tm_min = date.tm_sec = 0;
date.tm_hour = 1;
auto rotate_time = std::chrono::system_clock::from_time_t(std::mktime(&date));
return system_clock::time_point(rotate_time + hours(24));
}
编辑:我committed修复了这个问题。现在用户可以设置 HH:MM 所需的滚动时间
使用spdlog,如何更改每日记录器的默认滚动时间?
在以下示例中,滚动仅在午夜发生:
auto logger = spd::daily_logger_st("my_logger", "fl_log.txt");
目前没有直接的方法来更改每日记录器中的轮换时间 - 请打开一个问题 here..
一个快速的解决方法是将 _calc_midnight_tp()
函数修改为 return 所需的旋转时间,而不是 daily_file_sink class..[=15= 中的午夜]
例如,在凌晨 1 点而不是午夜轮换:
static std::chrono::system_clock::time_point _calc_midnight_tp()
{
using namespace std::chrono;
auto now = system_clock::now();
time_t tnow = std::chrono::system_clock::to_time_t(now);
tm date = spdlog::details::os::localtime(tnow);
date.tm_min = date.tm_sec = 0;
date.tm_hour = 1;
auto rotate_time = std::chrono::system_clock::from_time_t(std::mktime(&date));
return system_clock::time_point(rotate_time + hours(24));
}
编辑:我committed修复了这个问题。现在用户可以设置 HH:MM 所需的滚动时间