2014-01-22 132 views
4

我想使用Boost.Log(v1.55.0)來設置日誌記錄,我似乎無法找到在後端安裝文件收集器的方法所以它只會保留最後20個日誌。如何設置boost.log來限制日誌文件的數量

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

在調用匯::文件:: make_collector有一些我已經找到像MAX_SIZE和min_free_space關鍵字,但是這兩個都不是我要找的。我只想像max_files這樣的東西,所以我可以告訴它只保留最後20個日誌,而不管它們佔用多少磁盤空間。我能找到的唯一參考是這張票已打開:https://svn.boost.org/trac/boost/ticket/8746

也似乎沒有一個可用的關鍵字的文件列表。我發現的所有這些都來自網絡上的例子。

+0

我在尋找相同。你有沒有找到解決方案? – zuko

+0

@zuko不,我找不到任何解決方案。這可能是他們稍後添加的內容。我最終沒有使用提升記錄。 – Murrgon

回答

5

make_collector文件,從text_file_backend.hpp採取:

下面的命名參數的支持:

  • 目標 - 指定被存儲在文件的目標目錄。該參數是強制性的。
  • max_size - 指定收集器將嘗試不超過的存儲文件的最大總大小(以字節爲單位)。如果大小超過此閾值,則會刪除最舊的文件以釋放空間。請注意,如果單個文件的大小超過\ c max_size值,則可能會超出閾值。如果未指定,則不保留閾值。
  • min_free_space - 指定收集器嘗試維護的目標目錄中的最小可用空間(以字節爲單位)。如果超出閾值,則刪除最舊的文件以釋放空間。如果未指定,則不保留閾值。

所以的boost ::登錄目前不支持,收集有關他們的人數舊的日誌文件。

相關問題