2017-03-23 231 views
0

我試圖寫日誌消息到磁盤,所以我選擇FileAppender(同步無緩衝區)。但速度不太好。 考慮下面的代碼log4cxx的最佳做法是什麼?

const std::string pattern("%d %m%n"); 
log4cxx::LayoutPtr layPtr = new PatternLayout(pattern); 
FileAppender *fileappender = new FileAppender(layPtr, "log4cxx_bench.log", true); 
const std::string line(30, 'k'); 
LOG4CXX_INFO(logger1, line); 

花了近4秒。文件大小是60MB。因此速度爲15MB/s。我嘗試使用Xcode進行配置文件,配置文件圖像如下: enter image description here

更改爲與緩衝區同步。幾乎一樣。我不知道如何優化它。

回答

1

簡而言之:默認情況下減少日誌。

大多數LOG4CXX調用應該處於生產系統中默認未記錄的級別。當出現問題並且您想要調試系統的某個組件時,您可以調整配置,以便爲該組件記錄更詳細的級別。這是通過減少記錄來加速你的應用程序。

另一個想法是配置您的LOG4CXX,使得對於每個日誌消息,打印更少的附加信息(如果您不需要它們)。

或者,您可以更改日誌文件以使用更快的設備,例如閃存SSD甚至tmpfs。

相關問題