2012-05-14 35 views
9

如何配置boost日誌,用於旋轉和追加書寫?如何配置boost日誌,用於旋轉和追加書寫?

重啓程序後,不要清除日誌文件。

int init_log() 
{ 
    typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink; 
    boost::shared_ptr<file_sink> sink(new file_sink (
     keywords::file_name = "app.log", // only one files 
     // keywords::open_mode = (std::ios::out | std::ios::app), // is not append 
     keywords::open_mode = (std::ios::out | std::ios::app), // is not rotated 
     keywords::rotation_size = 10 * 1024 
    )); 
} 
+1

我不知道如何做到這一點,但log4cpp做這一切,並得到廣泛應用。 http://log4cpp.sourceforge.net/api/classlog4cpp_1_1RollingFileAppender.html –

+0

可能的重複[Boost.Log - 如何配置文本接收器後端以追加到旋轉的文件](http://stackoverflow.com/questions/8418917/ boost-log-how-to-configure-a-text-sink-backend-append-to-rotated-files) –

回答

5

請嘗試了這一點(關鍵是使用一些模式添加日誌名稱,而不是固定的名稱,比如「app.log」),這將使旋轉放到火和數據將被追加到每個創建文件。關於日誌結算,只要你有沒有指定的自定義file_collector的記錄應該保持不變:)

typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink; 
boost::shared_ptr<file_sink> sink(new file_sink(
     keywords::file_name  = "app%m%d%Y_%H%M%S_%5N.log", // file name pattern 
     keywords::rotation_size = 10*1024      // rotation size, in characters 
     )); 
+5

對於每個程序調用,日誌數據應附加到同一個日誌文件中,直到達到旋轉大小。通過該代碼,每次運行都會創建一個新的日誌文件。 – ixe013