超輕量級、高性能C日誌庫EasyLogger

EasyLogger概述

日誌是一種友好、強大的記錄軟件運行時內部結構和狀態的工具,是調試、運維利器。當然每種語言都會提供專門的調試工具,比如c/c++ gdb,java 的 jdb 等等。但是涉及到業務邏輯,併發,交互等情況時,還是日誌更輕巧、便捷。用戶,運維,開發人員,軟件學習愛好都需要日誌信息。每個軟件都有自己的日誌系統,每種語言都有自己的日誌框架/模塊,隨著互聯網和大數據的蓬勃發展,分佈式的日誌系統,以及日誌分析系統也應用的越來越廣泛,越來越成熟。

EasyLogger 是一款超輕量級(ROM<1.6K, RAM<0.3k)、高性能的 C/C++ 日誌庫 ,非常適合對資源敏感的軟件項目,例如:IoT產品、可穿戴設備、智能家居等等。相比glog(google的開源日誌系統)、log4c、zlog這些知名的C日誌庫,EasyLogger的功能更加簡單,提供給用戶的接口更少,但上手很快,更多實用功能支持以插件形式進行動態擴展。

EasyLogger主要功能

  • 支持用戶自定義輸出方式(例如:終端、文件、數據庫、串口、485、Flash...);
  • 日誌內容可包含級別、時間戳、線程信息、進程信息等;
  • 日誌輸出被設計為線程安全的方式,並支持 異步輸出 及 緩衝輸出模式;
  • 支持多種操作系統(RT-Thread、UCOS、Linux、Windows...),也支持裸機平臺;
  • 日誌支持 RAW格式 ;
  • 支持按 標籤 、 級別 、 關鍵詞 進行動態過濾;
  • 各級別日誌支持不同顏色顯示
  • 擴展性強,支持以插件形式擴展新功能。支持Flash插件,使用 EasyFlash 庫提供的Flash操作接口,無需文件系統,直接將日誌存儲在 Flash 中。

EasyLogger使用

EasyLogger 參數配置

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

輸出過濾

支持按照 級別、標籤及關鍵詞 進行過濾。日誌內容較多時,使用過濾功能可以更快定位日誌,保證日誌的可讀性。更多的過濾功能設置方法及細節請閱讀\\docs\\zh\\api\\kernel.md文檔。

輸出格式

輸出格式支持:級別、時間、標籤、進程信息、線程信息、文件路徑、行號、方法名。每種優先級別可以獨立設置輸出格式。

超輕量級、高性能C日誌庫EasyLogger

EasyLogger源碼

EasyLogger 源碼位於https://github.com/armink/EasyLogger,感興趣的可下載閱讀。

"


分享到:


相關文章: