【问题标题】:Limiting size of rotation logs in Boost Log v2在 Boost Log v2 中限制轮换日志的大小
【发布时间】:2014-02-01 04:25:58
【问题描述】:

我有点坚持使用 boost log 实现一个非常简单的场景。我需要限制整个轮换日志的大小。

我当前的记录器配置如下:

void setup_logging( channel_settings_t const& settings
                , std::string const& log_file
                , std::string const& log_level
                )
{
  config_logger_attributes(logging::core::get(), settings, log_level);

  using namespace logging::aux::default_attribute_names;

  //add logging to file (which implicitly deletes the default console logger)
  logging::add_file_log
  (
    keywords::auto_flush = true,
    keywords::open_mode = std::ios::out | std::ios::app,
    keywords::file_name = log_file+"_%N.log",
    keywords::rotation_size = 50 * 1024, // Just for test limit to 50K
    keywords::format = //"%TimeStamp%: [%Channel%] |ThreadId| <%Severity%> %Message%"
      expr::format("%1% : [%2%] |%3%| <%4%> %5%")
      % expr::attr< boost::posix_time::ptime >(timestamp())
      % expr::attr<std::string>(channel())
      % expr::attr<attrs::current_thread_id::value_type>(thread_id())
      % trivial::severity
     % expr::smessage
  )->locked_backend()->set_file_collector
     ( sinks::file::make_collector
       ( keywords::target = "logs"
       , keywords::max_size = 200 * 1024 // just for test limit to 200K
       )
     )
  ;
}

不幸的是,我找不到目标关键字的含义,尽管它是一个目标目录。与 smth 相关的目标目录还是应该有完整路径?这个目标目录应该存在吗?我做了一个测试,轮换的日志文件刚刚超过 200K 的限制。

我只想说 3 或 4 个最后轮换的日志文件,其余的应该删除吗?我们已经遇到了这种情况,记录器使用了所有磁盘空间并且服务器崩溃了:(

如果非常感谢任何帮助!

【问题讨论】:

    标签: c++ logging boost rotation


    【解决方案1】:

    好的,找到了:

    keywords::target
    

    是存储旋转日志的完全限定目录路径,所以它必须是这样的:

    /var/log/dir-to-app
    

    限制按预期工作。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      相关资源
      最近更新 更多