C++ 限制Boost Log v2中旋转日志的大小

C++ 限制Boost Log v2中旋转日志的大小,c++,logging,boost,rotation,C++,Logging,Boost,Rotation,我有点难以用boostlog实现一个非常简单的场景。我需要限制整个旋转日志的大小 我当前的记录器配置如下所示: void setup_logging( channel_settings_t const& settings , std::string const& log_file , std::string const& log_level ) { config_logge

我有点难以用boostlog实现一个非常简单的场景。我需要限制整个旋转日志的大小

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

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
       )
     )
  ;
}
无效设置\u日志记录(通道设置\u常数和设置
,std::字符串常量和日志文件
,std::字符串常量和日志级别
)
{
配置日志记录器属性(logging::core::get(),设置,日志级别);
使用名称空间日志::aux::默认属性名称;
//将日志添加到文件(隐式删除默认控制台记录器)
日志记录::添加文件日志
(
关键词::auto_flush=true,
关键词::开放模式=std::ios::out | std::ios::app,
关键词::file\u name=log\u file+“\u%N.log”,
关键词::rotation\u size=50*1024,//仅用于测试限制为50K
关键词::格式=/%TimeStamp%:[%Channel%]|线程ID |%Message%“
expr::format(“%1%:[%2%]|%3%|%5%”)
%expr::attr(timestamp())
%expr::attr(通道())
%expr::attr(线程id())
%琐碎的:严重性
%表达式::smessage
)->锁定的\u后端()->设置\u文件\u收集器
(接收器::文件::make_收集器
(关键字::target=“日志”
,关键字::max_size=200*1024//仅用于测试限制为200K
)
)
;
}
不幸的是,我找不到target关键字的含义,尽管它是一个目标目录。与smth相关的目标目录,或者应该有完整路径?这个目标目录应该存在吗?我做了一个测试,旋转日志文件的大小刚好超过了200K的限制

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

非常感谢您的帮助!

好的,找到它:

keywords::target
是存储已旋转日志的完全限定目录路径,因此它必须类似于smth:

/var/log/dir-to-app
超出了预期的限制