2014-01-13 26 views
2

我有點堅持使用boost日誌實現一個非常簡單的方案。我需要限制整個輪轉日誌的大小。Boost Log中限制輪轉日誌的大小v2

我現在的記錄儀的配置看起來像這樣:

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 
     ) 
    ) 
    ; 
} 

不幸的是,我無法找到目標關鍵詞的意思,儘管事實上,這是一個目標目錄。與目標相關的目錄或應該有完整路徑?該目標目錄是否存在?我做了一個測試,旋轉日誌文件只是在200K的限制下增長。

我只想讓我們說3或4最後旋轉的日誌文件,其餘的應該被刪除?我們已經遇到了這種情況,其中記錄器中使用的所有磁盤空間和服務器崩潰:(

如果非常讚賞任何幫助

回答

2

好吧,發現了這件事:

keywords::target 

是全合格的目錄路徑來存儲循環日誌,所以它必須像水木清華:

/var/log/dir-to-app 

超過界限,按預期工作