假設我在多線程環境中調用函數時只記錄1個整數,那麼實現此機制的最佳設計是什麼?例如:什麼是記錄極少量數據的最有效方式?
void foo1() {
log(1);
...
}
void foo2() {
log(2);
...
}
以下是可能的方式:
- 只需登錄到使用
fprintf()
文件。 問題: 爲了記錄1個整數而調用 函數是不是一個昂貴的操作?糾正我,如果我錯了。 - 將記錄的整數存儲到數組緩衝區中;並定期刷新到文件中。 問題:如果線程崩潰,則進程將停止所有線程。所以可能,我可能會丟失很多最後的日誌信息。
對高效日誌記錄機制有何建議?
不使用開源日誌框架的特殊原因? – 2012-03-09 14:06:34
您應該首先擔心同步訪問日誌文件,這可能比性能更重要。 – 2012-03-09 14:07:59
回覆@Als up,這裏是你可以/應該使用的C++日誌框架列表:http://stackoverflow.com/questions/696321/best-logging-framework-for-native-c – 2012-03-09 14:12:47