Log4cpp 為中小型C 專案加上log支援

2021-07-04 14:57:29 字數 806 閱讀 3066

對於乙個上點規模的c++專案而言,log的作用是毋庸置疑的,出問題的時候,看了log,常見的問題處理起來自是方便不過,即使遇到麻煩的問題,也可以從log總發現不少蛛絲馬跡。因此乙個嚴肅的專案應該從一開始就好好考慮如何打log,便於分析、維護。

現實的情況卻是很多專案都是從最初的數千行**逐步龐大起來;開始的時候可能為了圖方便,加log的方式大多是自己在iostream的基礎上自己封裝一下;等到專案擴大數十倍的時候,卻發現這種方式很力不從心,log檔案凌亂複雜,難以管理。

現有的log工具,基本是分為兩個陣營,經典的syslog和花哨強大的log4j,從而衍生出很多個變體。log4j基本已經成為複雜應用程式的log標準了,無奈c++的幾個模仿者確各有千秋。我的情況是:

1>不需要複雜的配置,甚至不需要配置檔案,但修改log訊息格式又要很方便

2>支援自動備份功能

3>多執行緒安全

4>效率要盡量高

5>不要有其他依賴

本來最感興趣的是log4cxx, apache的偉大專案,功能也最全,麻煩的是它自帶了兩個平台庫,需要額外依賴;配置檔案也要顯示準備,感覺太臃腫了,估計大專案採用的吧。

效率上最高的應該是pantheiosle了,據說沒開啟log的情況下,overhead幾乎是0,作者自稱效率是log4cxx的數倍,但也依賴於stlsoft(雖然只有標頭檔案),其打包方式也讓人想避而遠之,還要用作者自己寫的版本選擇器來選乙個合適的庫(win的情況)。

還有乙個是boost的logging庫,用盡了模板技巧,雖然很炫,當時沒多少用,也沒有通過boost 嚴格的review,雖然是專家寫的,暫時也沒時間評估和學習了。

from: 

C 日誌框架log4cpp

c 日誌框架log4cpp 使用說明詳見log4cpp官網。windows平台編譯log4cpp庫詳見連線 附件中包括x64 release的庫檔案。lib庫 dll庫 編寫log4cpp.properties配置檔案,如下文 定義rootcategory的屬性 log4cpp.rootcatego...

log4cpp應用速成手冊

log4cpp應用手冊 2 開啟 log4cpp 0.3.4b msvc6 msvc6.dsw 編譯log4cpp工程release版。3 將編譯後的log4cpp.lib複製到vc的lib目錄中。4 將標頭檔案的目錄log4cpp 0.3.4b include log4cpp 複製到vc的incl...

Cpp呼叫Log4cpp生成日誌

初始化 log4cpp patternlayout playout new log4cpp patternlayout playout setconversionpattern d p c x m n log4cpp category root log4cpp category getroot ge...