【问题标题】:How to setup boost.log to limit the number of log files如何设置 boost.log 以限制日志文件的数量
【发布时间】:2014-01-22 16:07:39
【问题描述】:

我正在尝试使用 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"
  )
);

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

似乎也没有可供使用的关键字的记录列表。我找到的所有例子都是从网上找到的例子。

【问题讨论】:

  • 我正在寻找相同的。你找到解决办法了吗?
  • @zuko 不,我找不到任何解决方案。这可能是他们稍后会添加的内容。我最终没有使用 boost 进行日志记录。

标签: c++ logging boost


【解决方案1】:

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

支持以下命名参数:

  • target - 指定存储文件的目标目录。此参数是必需的。
  • max_size - 指定收集器尝试不超过的存储文件的最大总大小(以字节为单位)。如果大小超过此阈值,则最旧的文件将被删除以释放空间。请注意,如果单个文件的大小超过 \c max_size 值,则可能会超过阈值。如果未指定,则不会维持阈值。
  • min_free_space - 指定收集器尝试维护的目标目录中的最小可用空间(以字节为单位)。如果超过阈值,则会删除最旧的文件以释放空间。如果未指定,则不会维持阈值。

所以boost::log目前不支持根据数量收集旧日志文件。

【讨论】:

    【解决方案2】:

    可以从版本 1.61 开始,使用 max_files 参数:http://www.boost.org/doc/libs/1_61_0/libs/log/doc/html/log/detailed/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
        ));
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2016-03-12
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多