【问题标题】:How to change the default rolling time in spdlog daily logger?如何更改 spdlog 每日记录器中的默认滚动时间?
【发布时间】:2015-02-02 14:32:38
【问题描述】:

使用spdlog,如何更改每日日志的默认滚动时间?

在以下示例中,滚动仅在午夜发生:

auto logger = spd::daily_logger_st("my_logger", "fl_log.txt");

【问题讨论】:

标签: c++ logging spdlog


【解决方案1】:

目前没有直接的方法来更改每日记录器中的轮换时间 - 请打开一个问题here..

一种快速的解决方法是修改 _calc_midnight_tp() 函数以返回所需的旋转时间,而不是 daily_file_sink 类中的午夜。

例如在凌晨 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    相关资源
    最近更新 更多