Boost.log:重置日志轮换计数器,当文件名在午夜

时间:2017-11-24 12:29:58

标签: c++ boost-log log-rotation

我使用文本文件后端作为接收器,其中包含占位符元素

  • 日期
  • log-rotation counter
  

"%Y-%间 - %d_mylogfile_%3N.log"

此外,后端配置为以特定大小和午夜旋转。

using namespace boost::log;
boost::shared_ptr<sinks::text_file_backend> backend = boost::make_shared<sinks::text_file_backend>(keywords::file_name = "%Y-%m-%d_mylogfile_%3N.log", keywords::rotation_size = 30 * 1024 * 1024, keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0),keywords::open_mode = std::ios_base::app);

这适用于没有在午夜运行的程序。当一个程序运行一天,从中午开始,我有以下问题:

2017-11-23_mylogfile_000.log
2017-11-23_mylogfile_001.log

// after rotation on midnight
2017-11-24_mylogfile_002.log  // <-- counter does not reset to 000

// after restart of the program at noon
2017-11-24_mylogfile_000.log

当文件在午夜获得新名称时,计数器不会重置。当我在中午重新启动程序时,会出现令人困惑的日志轮换顺序。

问题:
有人可以帮助并告诉我如何重置日志轮换计数器,当文件名中的日期发生变化时,程序会继续运行吗?

提前谢谢。

0 个答案:

没有答案