C++日志組件
C++日志組件
背景
無(wú)論使用什么編程語(yǔ)言,日志輸出幾乎都不在任何地方。 總之,日志大致有以下用途。 跟蹤問題:幫助在線故障排除和識(shí)別問題,優(yōu)化流程性能。 狀態(tài)監(jiān)測(cè):通過(guò)日志分析,可以監(jiān)測(cè)系統(tǒng)的運(yùn)行狀態(tài)。 安全審核:審核主要反映在安全性上,可以檢測(cè)到不正確的操作。 日志:記錄程序的運(yùn)行軌跡,方便查找關(guān)鍵信息,也方便快速定位解決問題。 日志對(duì)程序來(lái)說(shuō)非常重要。 良好的日志信息有助于在程序出現(xiàn)錯(cuò)誤時(shí)快速定位并確定其原因。
組件

Spdlog
https://github.com/gabime/spdlog?spdlog是一個(gè)開源的、快速的、僅有頭文件的C++11 日志庫(kù),目前最新的發(fā)布版本為0.14.0。它提供了向流、標(biāo)準(zhǔn)輸出、文件、系統(tǒng)日志、調(diào)試器等目標(biāo)輸出日志的能力。它支持的平臺(tái)包括Windows、Linux、Mac、Android。
優(yōu)點(diǎn)
1、非常快 2、無(wú)需依賴第三方庫(kù) 3、支持跨平臺(tái) 4、支持多線程 5、可對(duì)日志文件進(jìn)行循環(huán)輸出 6、可每日生成日志文件 7、支持控制臺(tái)日志輸出 8、可選的異步日志 9、支持日志輸出級(jí)別 10、可自定義日志格式
部署方法
編譯成靜態(tài)庫(kù)然后導(dǎo)入項(xiàng)目
cmake?..
make?
make?install?DESTDIR=../install

glog
https://github.com/google/glog?Glog 是google 出的一個(gè)開源C++輕量級(jí)日志庫(kù),是一個(gè)C++98標(biāo)準(zhǔn)下開發(fā)的庫(kù),實(shí)現(xiàn)了應(yīng)用級(jí)的日志系統(tǒng)。該庫(kù)提供了C++風(fēng)格的日志API,以及豐富的宏。
優(yōu)點(diǎn)
1、嚴(yán)重性分級(jí)記錄信息:INFO、WARNING、ERROR、FATAL。 2、可以有條件地記錄日志信息。 3、有條件終止程序。豐富的條件判斷定宏,可預(yù)設(shè)程序終止條件。 4、異常信號(hào)處理。程序異常情況,可自定義異常處理過(guò)程。 5、支持debug功能。可只用于debug模式。 6、線程安全日志記錄方式。 7、系統(tǒng)級(jí)日志記錄。 8、Google perror風(fēng)格日志信息。 9、精簡(jiǎn)日志字符串信息。
部署方法
編譯成動(dòng)態(tài)庫(kù)然后導(dǎo)入項(xiàng)目
cmake?..
make?
make?install?DESTDIR=../install

EasyLoggingpp
https://github.com/muflihun/easyloggingpp?Easyloggingpp是一個(gè)C++開源log庫(kù) Easyloggingpp最大的特點(diǎn)是只需一個(gè)頭文件,且所有功能都是內(nèi)部實(shí)現(xiàn),無(wú)需依靠其他第三方庫(kù),所以使用起來(lái)非常方便。
優(yōu)點(diǎn)
1、跨平臺(tái):windows,linux,Android等平臺(tái) 2、輕量級(jí) 3、高性能 4、線程和類型安全性 5、高可配置性:可配置log輸出目的設(shè)備,自定義log格式,log等級(jí)調(diào)控等。 6、性能跟蹤 7、支持STL log,第三方庫(kù)(QT,boost等)log 8、可擴(kuò)展:支持自定義類log輸出
部署方法
使用easyloggingpp非常簡(jiǎn)單,只需兩個(gè)步驟: (1)把easylogging++.h 包含進(jìn)你的項(xiàng)目中; (2)用一個(gè)宏進(jìn)行初始化:INITIALIZE_EASYLOGGINGPP 目錄結(jié)構(gòu)如下

Easylogger
https://github.com/armink/EasyLogger?EasyLogger是一款超輕量級(jí)、高性能的C日志庫(kù),非常適合對(duì)資源敏感的軟件項(xiàng)目,例如:IoT產(chǎn)品、可穿戴設(shè)備、智能家居等等。相比log4c、zlog這些知名的C日志庫(kù),EasyLogger的功能更加簡(jiǎn)單,提供給用戶的接口更少,但上手會(huì)很快,更多實(shí)用功能支持以插件形式進(jìn)行動(dòng)態(tài)擴(kuò)展。
優(yōu)點(diǎn)
1、支持用戶自定義輸出方式(例如:終端、文件、數(shù)據(jù)庫(kù)、串口、485、Flash) 2、日志內(nèi)容可包含級(jí)別、時(shí)間戳、線程信息、進(jìn)程信息等; 3、日志輸出被設(shè)計(jì)為線程安全的方式; 4、支持多種操作系統(tǒng)(RT-Thread、UCOS、Linux、Windows...),也支持裸機(jī)平臺(tái); 5、日志支持RAW格式; 6、支持按標(biāo)簽、級(jí)別 、關(guān)鍵詞進(jìn)行動(dòng)態(tài)過(guò)濾; 7、各級(jí)別日志支持不同顏色顯示; 8、擴(kuò)展性強(qiáng),支持以插件形式擴(kuò)展新功能。 名詞解釋: 1、RAW 格式:未經(jīng)過(guò)格式化的原始日志。 2、標(biāo)簽:在軟件中可以按照文件、模塊、功能等方面,對(duì)需要打印的日志設(shè)定標(biāo)簽,實(shí)現(xiàn)日志分類
部署方法
編寫makefile然后運(yùn)行 make 命令生成可執(zhí)行文件
性能分析
分別生成1000、10000、100000條自定義日志,每條日志文件2kb,測(cè)試耗時(shí)。

測(cè)試用例編寫
編寫一段代碼,暴露一個(gè)程序中斷的接口,編譯成動(dòng)態(tài)庫(kù),然后在另一個(gè)程序里面調(diào)用。 編寫cmake 執(zhí)行命令 cmake .. & make
實(shí)現(xiàn)效果
spdlog

glog

easyloggingpp

easylogger

最后
如有不好的地方或做的不對(duì)的地方,歡迎聯(lián)系我 WeChat: Debu_cat