EasyLogger 是一款超輕量級(ROM<1.6K, RAM<0.3K)、高性能的 C/C++ 日誌庫,非常適合對資源敏感的軟件項目,例如: IoT 產品、可穿戴設備、智能家居等等。相比 log4c、zlog 這些知名的 C/C++ 日誌庫, EasyLogger 的功能更加簡單,提供給用戶的接口更少,但上手會很快,更多實用功能支持以插件形式進行動態擴展。
主要特性
- 支持用戶自定義輸出方式(例如:終端、文件、數據庫、串口、485、Flash…);
- 日誌內容可包含級別、時間戳、線程信息、進程信息等;
- 日誌輸出被設計為線程安全的方式,並支持 異步輸出 及 緩衝輸出 模式;
- 支持多種操作系統(RT-Thread、UCOS、Linux、Windows…),也支持裸機平臺;
- 日誌支持 RAW格式 ;
- 支持按 標籤 、 級別 、 關鍵詞 進行動態過濾;
- 各級別日誌支持不同顏色顯示
- 擴展性強,支持以插件形式擴展新功能。
使用
參數配置
EasyLogger 擁有過濾方式、輸出格式、輸出開關這些屬性。
- 過濾方式支持按照標籤、級別、關鍵詞進行過濾;
- 可以動態的開啟/關閉日誌的輸出;
- 可設定動態和靜態的輸出級別(靜態:一級開關,通過宏定義;動態:二級開關,通過API接口)。
輸出級別
參考 Android Logcat ,級別最高為 0(Assert) ,最低為 5(Verbose) 。
0.[A]:斷言(Assert)
1.[E]:錯誤(Error)
2.[W]:警告(Warn)
3.[I]:信息(Info)
4.[D]:調試(Debug)
5.[V]:詳細(Verbose)
輸出繽紛多彩的日誌
各個級別日誌默認顏色效果如下。用戶也可以根據自己的喜好,在 elog_cfg.h 對各個級別日誌的顏色及字體風格進行單獨設置。
![介紹一個超輕量級、高性能C日誌庫——EasyLogger](http://p2.ttnews.xyz/loading.gif)
輸出過濾
支持按照 級別、標籤及關鍵詞 進行過濾。日誌內容較多時,使用過濾功能可以更快定位日誌,保證日誌的可讀性。更多的過濾功能設置方法及細節請閱讀\docs\zh\api\kernel.md文檔
輸出格式
輸出格式支持:級別、時間、標籤、進程信息、線程信息、文件路徑、行號、方法名。每種優先級別可以獨立設置輸出格式。
注:默認為 RAW格式,RAW格式日誌不支持標籤過濾
輸出方式
通過用戶的移植,可以支持任何一種輸出方式。只不過對於某種輸出方式可能引入的新功能,需要通過插件實現,例如:文件轉存,檢索Flash日誌等等。後期會有更多的插件開源出來。下面簡單對比下部分輸出方式使用場景:
- 終端:方便用戶動態查看,不具有存儲功能;
- 文件與Flash:都具有存儲功能,用戶可以查看歷史日誌。但是文件方式需要文件系統的支持,而Flash方式更加適合應用在無文件系統的小型嵌入式設備中。
Demo
下圖為在終端中輸入命令來控制日誌的輸出及過濾器的設置,更加直觀的展示了 EasyLogger 核心功能。
![介紹一個超輕量級、高性能C日誌庫——EasyLogger](http://p2.ttnews.xyz/loading.gif)
閱讀更多 cpp軟件架構獅 的文章