大家好,我是小麥,日志系統(tǒng)在系統(tǒng)開發(fā)和調(diào)整過程中的重要性,
大家應(yīng)該都清楚,特別是項目出問題之后,卻沒有日志可以幫忙定位問題,就非常令人痛苦。
因為我們不可能一直通過調(diào)試器去單步調(diào)試程序,所以設(shè)備的運行日志顯得尤為重要。
通常我們對日志有這些要求:
-
不同的日志級別(
Debug
,Warning
,Info,
Error
,Fatal
); -
日志打印要和
printf
一樣簡單易用; - 能夠設(shè)置日志級別;
- 占用空間??;
- 可配置,甚至可以禁用日志;
- 基于不同日志級別,支持顏色高亮;
- 可以自定義配置,時間戳;
- 支持RTOS;
以上是比較基本的功能,但是在嵌入式設(shè)備中,有的時候我們希望可以保存設(shè)備的運行日志,我們需要以下的一些功能;
- 支持多種訪問方式,比如串口終端,保存到嵌入式文件系統(tǒng)中;
- 支持shell命令行通過串口終端進行訪問;
以上這些需求不一定會全部實現(xiàn)。
除了常用的log4c
,log4cpp
,下面給大家推薦3個非常不錯的開源日志庫,比較適合用在單片機的項目中。從開始的輕量,到后面的功能豐富,最后一個很強大,所以請耐心看到最后。
rxi_log
項目地址:https://github.com/rxi/log.c
基于 C99 實現(xiàn)的簡單日志庫,具體輸出如下所示;
image-20211204142024466具體用法
將源碼中的log.c
和log.h
集成到你的項目中即可,需要打印日志的話,調(diào)用下面的API即可,如下所示;
log_trace(constchar*fmt,...);
log_debug(constchar*fmt,...);
log_info(constchar*fmt,...);
log_warn(constchar*fmt,...);
log_error(constchar*fmt,...);
log_fatal(constchar*fmt,...);
除了這些API,還有log_set_quiet
,log_set_lock
,LOG_USE_COLOR
等等,詳情請看原項目。
ulog
項目地址:https://github.com/rdpoor/ulog
uLog 為嵌入式微控制器或任何資源有限的系統(tǒng)提供結(jié)構(gòu)化的日志記錄機制。它繼承了流行的 Log4c
和 Log4j
平臺背后的一些概念,但開銷更低。
uLog 的一些特點:
- uLog 易于集成到幾乎任何環(huán)境中,由一個頭文件和一個源文件組成,并且是用純 C 編寫的。
- uLog 提供熟悉的嚴重級別(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)。
- uLog 支持多個用戶定義的輸出(控制臺、日志文件、內(nèi)存緩沖區(qū)等),每個輸出都有自己的報告閾值級別。
- uLog 是具有最小依賴性的“積極獨立”,僅需要 stdio.h、string.h 和 stdarg.h。
- 當(dāng)您不使用 uLog 時,它不會妨礙您:如果 ULOG_ENABLED 在編譯時未定義,則不會生成日志記錄代碼。
- uLog 已經(jīng)過很好的測試。有關(guān)詳細信息,請參閱隨附的 ulog_test.c 文件。
EasyLogger
項目地址:https://github.com/armink/EasyLogger
這個項目我用了很長時間,強烈推薦,是RT-Thread大佬的作品,已經(jīng)集成到RTOS的內(nèi)部了,支持的功能非常豐富,基本滿足各種開發(fā)的需求。
特點如下:
- 輕量,ROM<1.6K, RAM<0.3K;
- 支持多種訪問模式(例如:終端、文件、數(shù)據(jù)庫、串口、485、Flash...);
- 日志內(nèi)容可包含級別、時間戳、線程信息、進程信息等;
- 線程安全,并支持 異步輸出 及 緩沖輸出 模式;
- 支持多種操作系統(tǒng)(RT-Thread、UCOS、Linux、Windows...),也支持裸機平臺;
- 日志支持 RAW格式 ,支持 hexdump ;
- 支持按 標簽 、 級別 、 關(guān)鍵詞 進行動態(tài)過濾;
- 各級別日志支持不同顏色顯示;
- 擴展性強,支持以插件形式擴展新功能。
以上只是這個項目的其中一部分,具體可以參考項目地址。
summary
希望大家在平常的開發(fā)中,重視日志的使用,每一個開發(fā)階段設(shè)置不同級別的日志,不同的模塊也分別設(shè)置模塊的日志,這樣方便定位出現(xiàn)一些問題,快速解決,提高效率。本期的文章就到這里,我們下期再見。
—— The End——審核編輯 :李倩
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18980瀏覽量
302251 -
日志系統(tǒng)
+關(guān)注
關(guān)注
0文章
7瀏覽量
6994 -
開源
+關(guān)注
關(guān)注
3文章
3229瀏覽量
42343
原文標題:高手常用的3個開源庫,讓單片機開發(fā)事半功倍
文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論