如何设置boost.log以限制日志文件的数量



我正在尝试使用boost.log(v1.55.0)设置记录,我似乎找不到在后端设置文件收集器的方法最后20个日志。

namespace sinks     = boost::log::sinks;
namespace keywords  = boost::log::keywords;
typedef sinks::text_file_backend            TextFileBackend;
typedef boost::shared_ptr<TextFileBackend>  TextFileBackendPtr;
TextFileBackendPtr pBackend =
  boost::make_shared<TextFileBackend>
  (
    keywords::file_name = "BoostLogTest_%Y%m%d.log",                            
    keywords::auto_flush = true
  );
// Set up where the rotated files will be stored
pBackend->set_file_collector
(
  sinks::file::make_collector
  (
    keywords::target = "..\Logs"
  )
);

在" calls :: file :: make_collector"的调用中,我发现了许多关键字,例如max_size和min_free_space,但是这两个都不是我想要的。我只想要Max_files之类的东西,因此我可以告诉它只能保留最后20个日志,而不管它们占用了多少磁盘空间。我唯一可以找到这样的参考是打开的这张票:https://svn.boost.org/trac/boost/ticket/ticket/8746。

似乎也没有可用于使用的关键字列表。我发现的所有内容都是来自网络上的示例。

来自 make_collector的文档,取自 text_file_backend.hpp

支持以下命名参数:

  • 目标 - 指定存储在存储中的文件的目标目录。此参数是强制性的。
  • max_size-指定收集器将尽量不超过的存储文件的最大总尺寸。如果大小超过此阈值,则将最旧的文件删除到可用空间。请注意,如果单个文件的大小超过 c max_size值,则可能会超过阈值。如果未指定,则不能保持阈值。
  • min_free_space-在收集器试图维护的目标目录中指定字节中的最小自由空间。如果超过阈值,则将最古老的文件删除到可用空间。如果未指定,则不能保持阈值。

so boost :: log 当前不支持基于其号码收集旧日志文件。

使用max_files参数:http://www.boost.org/doc/libs/1_61_0/libs/libs/log/log/doc/doc/doc/html/log/详细/sink_backends.html

void init_file_collecting(boost::shared_ptr< file_sink > sink)
{
    sink->locked_backend()->set_file_collector(sinks::file::make_collector(
        keywords::target = "logs",
        keywords::max_size = 16 * 1024 * 1024,
        keywords::min_free_space = 100 * 1024 * 1024,
        keywords::max_files = 512
    ));
}

最新更新