EasyLogger是一款由開發者社區維護的開源輕量級C/C++日誌庫,2017年5月首次發布,專為嵌入式物聯網設備(如智慧型家居、可穿戴設備)設計,旨在解決資源受限環境下的高效日誌管理需求。
該庫採用單例模式與模組化外掛程式架構,支持六種標準日誌級別(從Assert到Verbose),提供顏色標記、格式定製和多維度過濾功能,允許通過標籤、關鍵字或優先權篩選日誌。其核心特性包括RAW格式原始日誌輸出、終端互動式控制及Flash存儲擴展,ROM占用低於1.6KB,RAM占用小於0.3KB。通過外掛程式機制可擴展檔案轉存、異步緩衝輸出等高級功能,支持Linux、RT-Thread、Windows等多平台,提供STM32等嵌入式系統的移植示例。配置檔案採用MIT協定開源,適配終端、檔案、串口等多種輸出方式,滿足不同場景的調試需求。
基本介紹
- 軟體名稱:EasyLogger
- 軟體平台:PC/嵌入式MCU
- 軟體語言:C/C++
- 軟體授權:MIT
- 軟體版本:V2.0.0
- 軟體大小:
軟體介紹,主要特性,外掛程式,使用,參數配置,輸出級別,輸出過濾,輸出格式,輸出方式,核心功能,Flash日誌,文檔,許可,
軟體介紹
EasyLogger是一款超輕量級、高性能的C日誌庫,非常適合對資源敏感的軟體項目,例如:IoT產品、可穿戴設備、智慧型家居等等。相比log4c、zlog這些知名的C日誌庫,EasyLogger的功能更加簡單,提供給用戶的接口更少,但上手會很快,更多實用功能支持以外掛程式形式進行動態擴展。
主要特性
- 支持用戶自定義輸出方式(例如:終端、檔案、資料庫、串口、485、Flash...);
- 日誌內容可包含級別、時間戳、執行緒信息、進程信息等;
- 日誌輸出被設計為執行緒安全的方式;
- 支持多種作業系統(RT-Thread、UCOS、Linux、Windows...),也支持裸機平台;
- 日誌支持RAW格式;
- 支持按標籤、級別 、關鍵字進行動態過濾;
- 各級別日誌支持不同顏色顯示;
- 擴展性強,支持以外掛程式形式擴展新功能。
名詞解釋:
1、RAW格式:未經過格式化的原始日誌。
2、標籤:在軟體中可以按照檔案、模組、功能等方面,對需要列印的日誌設定標籤,實現日誌分類。
外掛程式
- 1、Flash:使用EasyFlash庫提供的Flash操作接口,可以把日誌直接存儲在Flash中。
- 2、File(正在開發):支持檔案轉檔、軟體運行時動態載入配置檔案等與檔案日誌輸出相關功能。
- 敬請期待……
使用
參數配置
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)
2.2.1 輸出繽紛多彩的日誌
各個級別日誌默認顏色效果如下。用戶也可以根據自己的喜好,在elog_cfg.h對各個級別日誌的顏色及字型風格進行單獨設定。
輸出過濾
支持按照級別、標籤及關鍵字進行過濾。日誌內容較多時,使用過濾功能可以更快定位日誌,保證日誌的可讀性。更多的過濾功能設定方法及細節請閱讀 \docs\zh\api\kernel.md 文檔。
輸出格式
輸出格式支持:級別、時間、標籤、進程信息、執行緒信息、檔案路徑、行號、方法名。每種優先權別可以獨立設定輸出格式。
註:默認為 RAW 格式,RAW 格式日誌不支持標籤過濾
輸出方式
通過用戶的移植,可以支持任何一種輸出方式。只不過對於某種輸出方式可能引入的新功能,需要通過外掛程式實現,例如:檔案轉存,檢索 Flash 日誌等等。後期會有更多的外掛程式開源出來。下面簡單對比下部分輸出方式使用場景:
- 終端:方便用戶動態查看,不具有存儲功能;
- 檔案與Flash:都具有存儲功能,用戶可以查看歷史日誌。但是檔案方式需要檔案系統的支持,而Flash方式更加適合套用在無檔案系統的小型嵌入式設備中。
核心功能
下圖為在終端中輸入命令來控制日誌的輸出及過濾器的設定,更加直觀的展示了EasyLogger核心功能。
Flash日誌
下圖過程為通過控制台輸出日誌,並將輸出的日誌存儲到Flash中。重啟再讀取上次保存的日誌,最後清空Flash日誌。
文檔
具體內容參考 \docs\zh\ 下的檔案。務必保證在閱讀文檔後再移植使用。
許可
採用 MIT 開源協定,細節請閱讀項目中的 LICENSE 檔案內容。


