EasyLogger 是一款超輕量級(ROM<1.6K, RAM<0.3K)、高性能的C/C++ 日誌庫,非常適合對資源敏感的軟件項目,例如: IoT 產品、可穿戴設備、智能家居等等。相比log4c、zlog 這些知名的C/C++ 日誌庫, EasyLogger 的功能更加簡單,提供給用戶的接口更少,但上手會很快,更多實用功能支持以插件形式進行動態擴展。
名詞解釋:
- 1、RAW格式:未經過格式化的原始日誌。
- 2、標籤:在軟件中可以按照文件、模塊、功能等方面,對需要打印的日誌設定標籤,實現日誌分類。
後續我還會提供更多插件。也非常歡迎大家設計、開發更多實用插件和功能,一起來完善EasyLogger (Github|OSChina|Coding) 。如果覺得這個開源項目很贊,可以點擊項目主頁右上角的Star ,同時把它推薦給更多有需要的朋友。
EasyLogger 擁有過濾方式、輸出格式、輸出開關這些屬性。
注:目前參數配置及輸出方式都是單例模式,即全局只支持一種配置方式。此模式下,軟件會較為簡單,但是無法支持複雜的輸出方式。
參考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對各個級別日誌的顏色及字體風格進行單獨設置。
支持按照級別、標籤及關鍵詞進行過濾。日誌內容較多時,使用過濾功能可以更快定位日誌,保證日誌的可讀性。更多的過濾功能設置方法及細節請閱讀docszhapikernel.md文檔
注:RAW格式、hexdump 格式日誌不支持標籤、關鍵詞過濾
輸出格式支持:級別、時間、標籤、進程信息、線程信息、文件路徑、行號、方法名。每種優先級別可以獨立設置輸出格式。
通過用戶的移植,可以支持任何一種輸出方式。只不過對於某種輸出方式可能引入的新功能,需要通過插件實現,例如:文件轉存,檢索Flash日誌等等。後期會有更多的插件開源出來。下面簡單對比下部分輸出方式使用場景:
下圖為在終端中輸入命令來控制日誌的輸出及過濾器的設置,更加直觀的展示了EasyLogger 核心功能。
demoosrt-threadstm32f10xdocszhapikernel.mddocszhportkernel.md下圖過程為通過控制台輸出日誌,並將輸出的日誌存儲到Flash 中。重啟再讀取上次保存的日誌,最後清空Flash 日誌。
demoosrt-threadstm32f10xdocszhapiflash.mddocszhportflash.md通過FIle 插件,可以將日誌自動保存至文件中。每個文件可以設定大小,超過規定大小後,自動新建新的文件來存儲日誌。
具體內容參考docszh下的文件。務必保證在閱讀文檔後再移植使用。
MIT Copyright (c) [email protected]