Как изменить стандартное время прокрутки в ежедневнике spdlog?

Используя spdlog, как я могу изменить стандартное время прокрутки ежедневного регистратора?

В следующем примере переход происходит только в полночь:

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

1 ответ

Решение

В настоящее время нет прямого способа изменить время ротации в ежедневнике - пожалуйста, откройте вопрос здесь.

Быстрый обходной путь - изменить _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));
}

Изменить: я исправил эту проблему. Теперь пользователь может установить ЧЧ: ММ желаемого времени прокатки

Другие вопросы по тегам