0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

推薦3個(gè)非常不錯(cuò)的開源日志庫

GReq_mcu168 ? 來源:小麥大叔 ? 作者:小麥大叔 ? 2022-05-12 14:51 ? 次閱讀
日志系統(tǒng)在系統(tǒng)開發(fā)和調(diào)整過程中的重要性,想必大家應(yīng)該都清楚。特別是項(xiàng)目出問題之后,卻沒有日志可以幫忙定位問題,就非常令人痛苦。

因?yàn)槲覀儾豢赡芤恢蓖ㄟ^調(diào)試器去單步調(diào)試程序,所以設(shè)備的運(yùn)行日志顯得尤為重要。

通常我們對(duì)日志有這些要求:

  • 不同的日志級(jí)別(Debug,Warning,Info,Error,Fatal);
  • 日志打印要和printf一樣簡(jiǎn)單易用;
  • 能夠設(shè)置日志級(jí)別;
  • 占用空間小;
  • 可配置,甚至可以禁用日志;
  • 基于不同日志級(jí)別,支持顏色高亮;
  • 可以自定義配置,時(shí)間戳;
  • 支持RTOS

以上是比較基本的功能,但是在嵌入式設(shè)備中,有的時(shí)候我們希望可以保存設(shè)備的運(yùn)行日志,我們需要以下的一些功能;

  • 支持多種訪問方式,比如串口終端,保存到嵌入式文件系統(tǒng)中;
  • 支持shell命令行通過串口終端進(jìn)行訪問;

以上這些需求不一定會(huì)全部實(shí)現(xiàn)。

除了常用的log4c,log4cpp,下面給大家推薦3個(gè)非常不錯(cuò)的開源日志庫,比較適合用在單片機(jī)的項(xiàng)目中。從開始的輕量,到后面的功能豐富,最后一個(gè)很強(qiáng)大,所以請(qǐng)耐心看到最后。

rxi_log

項(xiàng)目地址:https://github.com/rxi/log.c

基于 C99 實(shí)現(xiàn)的簡(jiǎn)單日志庫,具體輸出如下所示;

0d58c684-d1bc-11ec-bce3-dac502259ad0.pngimage-20211204142024466

具體用法

將源碼中的log.clog.h集成到你的項(xiàng)目中即可,需要打印日志的話,調(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等等,詳情請(qǐng)看原項(xiàng)目。

ulog

項(xiàng)目地址:https://github.com/rdpoor/ulog

uLog 為嵌入式微控制器或任何資源有限的系統(tǒng)提供結(jié)構(gòu)化的日志記錄機(jī)制。它繼承了流行的Log4cLog4j平臺(tái)背后的一些概念,但開銷更低。

uLog 的一些特點(diǎn):

  • uLog 易于集成到幾乎任何環(huán)境中,由一個(gè)頭文件和一個(gè)源文件組成,并且是用純 C 編寫的。
  • uLog 提供熟悉的嚴(yán)重級(jí)別(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)。
  • uLog 支持多個(gè)用戶定義的輸出(控制臺(tái)、日志文件、內(nèi)存緩沖區(qū)等),每個(gè)輸出都有自己的報(bào)告閾值級(jí)別。
  • uLog 是具有最小依賴性的“積極獨(dú)立”,僅需要 stdio.h、string.h 和 stdarg.h。
  • 當(dāng)您不使用 uLog 時(shí),它不會(huì)妨礙您:如果 ULOG_ENABLED 在編譯時(shí)未定義,則不會(huì)生成日志記錄代碼。
  • uLog 已經(jīng)過很好的測(cè)試。有關(guān)詳細(xì)信息,請(qǐng)參閱隨附的 ulog_test.c 文件。
0d985fe2-d1bc-11ec-bce3-dac502259ad0.pngcolor coding

EasyLogger

項(xiàng)目地址:https://github.com/armink/EasyLogger

0dbeb408-d1bc-11ec-bce3-dac502259ad0.pngTextColor

這個(gè)項(xiàng)目我用了很長時(shí)間,強(qiáng)烈推薦,是RT-Thread大佬的作品,已經(jīng)集成到RTOS的內(nèi)部了,支持的功能非常豐富,基本滿足各種開發(fā)的需求。

特點(diǎn)如下:

  • 輕量,ROM<1.6K, RAM<0.3K;
  • 支持多種訪問模式(例如:終端、文件、數(shù)據(jù)庫、串口、485、Flash...);
  • 日志內(nèi)容可包含級(jí)別、時(shí)間戳、線程信息、進(jìn)程信息等;
  • 線程安全,并支持異步輸出緩沖輸出模式;
  • 支持多種操作系統(tǒng)(RT-Thread、UCOS、Linux、Windows...),也支持裸機(jī)平臺(tái)
  • 日志支持RAW格式,支持hexdump;
  • 支持按標(biāo)簽級(jí)別、關(guān)鍵詞進(jìn)行動(dòng)態(tài)過濾;
  • 各級(jí)別日志支持不同顏色顯示;
  • 擴(kuò)展性強(qiáng),支持以插件形式擴(kuò)展新功能。

以上只是這個(gè)項(xiàng)目的其中一部分,具體可以參考項(xiàng)目地址。

summary

希望大家在平常的開發(fā)中,重視日志的使用,每一個(gè)開發(fā)階段設(shè)置不同級(jí)別的日志,不同的模塊也分別設(shè)置模塊的日志,這樣方便定位出現(xiàn)一些問題,快速解決,提高效率。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6039

    文章

    44579

    瀏覽量

    636417
  • 日志系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7010
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3370

    瀏覽量

    42570

原文標(biāo)題:高手常用的3個(gè)開源庫,讓單片機(jī)開發(fā)事半功倍!

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    1個(gè)工具4類日志,幫你解決99%的問題

    眾所周知,通過日志可以對(duì)研發(fā)過程中,以及模組運(yùn)行過程中的各種故障進(jìn)行分析,快速定位和解決問題。 但新手朋友往往念叨著“抓日志”,卻又無從下手……此時(shí)就不得不提到工程師朋友的寶藏工具
    的頭像 發(fā)表于 12-17 16:26 ?106次閱讀
    1<b class='flag-5'>個(gè)</b>工具4類<b class='flag-5'>日志</b>,幫你解決99%的問題

    開源AI模型是干嘛的

    開源AI模型是指那些公開源代碼、允許自由訪問和使用的AI模型集合。這些模型通常經(jīng)過訓(xùn)練,能夠執(zhí)行特定的任務(wù)。以下,是對(duì)開源AI模型的詳細(xì)
    的頭像 發(fā)表于 12-14 10:33 ?201次閱讀

    芯原股份與開源圖形LVGL達(dá)成戰(zhàn)略合作

    芯原股份 (芯原,股票代碼:688521.SH) 今日宣布與嵌入式系統(tǒng)領(lǐng)域領(lǐng)先的開源圖形LVGL達(dá)成戰(zhàn)略合作,在LVGL中支持芯原的低功耗3D和VGLite 2.5D GPU技術(shù)。
    的頭像 發(fā)表于 11-29 09:20 ?380次閱讀

    nginx日志配置方法

    access_log用來定義日志級(jí)別,日志位置。
    的頭像 發(fā)表于 10-24 17:43 ?245次閱讀

    日志篇:模組日志總體介紹

    ?今天我們學(xué)習(xí)合宙模組日志總體介紹,以下進(jìn)入正文。 一、本文討論的邊界 本文是對(duì)合宙 4G 模組, 以及 4G+GNSS 模組的日志功能的總體介紹。通過日志,可以對(duì)研發(fā)過程中,以及模組運(yùn)行過程中
    的頭像 發(fā)表于 10-24 07:16 ?209次閱讀
    <b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體介紹

    Matepad pro12.2 已上市半個(gè)月,但是還沒有在開源網(wǎng)站看到該項(xiàng)目的開源信息,違背開源精神

    Matepad pro12.2 已上市半個(gè)月,本人自己也購買了同款12+256的pad,想要同步學(xué)習(xí)下這款pad的一些體驗(yàn)還不錯(cuò)的功能點(diǎn),但是目前為止還沒有在開源網(wǎng)站看到該項(xiàng)目的開源信息,也查詢不到
    發(fā)表于 08-27 17:25

    統(tǒng)一日志數(shù)據(jù)流圖

    統(tǒng)一日志數(shù)據(jù)流圖 日志系統(tǒng)數(shù)據(jù)流圖 系統(tǒng)進(jìn)行日志收集的過程可以分為三個(gè)環(huán)節(jié): (1)日志收集和導(dǎo)入ElasticSearch (2)Elas
    的頭像 發(fā)表于 08-21 15:00 ?325次閱讀
    統(tǒng)一<b class='flag-5'>日志</b>數(shù)據(jù)流圖

    日志框架簡(jiǎn)介-Slf4j+Logback入門實(shí)踐

    前言 隨著互聯(lián)網(wǎng)和大數(shù)據(jù)的迅猛發(fā)展,分布式日志系統(tǒng)和日志分析系統(tǒng)已廣泛應(yīng)用,幾乎所有應(yīng)用程序都使用各種日志框架記錄程序運(yùn)行信息。因此,作為工程師,了解主流的日志記錄框架
    的頭像 發(fā)表于 07-30 10:00 ?1166次閱讀
    <b class='flag-5'>日志</b>框架簡(jiǎn)介-Slf4j+Logback入門實(shí)踐

    奇怪!應(yīng)用的日志呢??

    1. 問題回顧 問題背景 是在進(jìn)行中臺(tái)應(yīng)用中間件遷移過程中,發(fā)現(xiàn)存在 項(xiàng)目啟動(dòng)失敗 或者 項(xiàng)目正常啟動(dòng) (jsf正常掛載并正常運(yùn)行,mq正常發(fā)送和消費(fèi))但是 無任何日志打印 現(xiàn)象。 更奇怪 的是不打
    的頭像 發(fā)表于 06-11 10:48 ?330次閱讀
    奇怪!應(yīng)用的<b class='flag-5'>日志</b>呢??

    阿里云與中興通訊達(dá)成開源數(shù)據(jù)合作

    近日,阿里云與中興通訊宣布達(dá)成開源數(shù)據(jù)領(lǐng)域的深度合作。中興通訊正式加入PolarDB開源社區(qū),并榮任首屆理事會(huì)成員單位,這一舉措標(biāo)志著兩大科技巨頭在數(shù)據(jù)領(lǐng)域的合作邁向新的高度。
    的頭像 發(fā)表于 05-17 10:47 ?587次閱讀

    阿里云與中興通訊達(dá)成開源數(shù)據(jù)合作,助推國產(chǎn)數(shù)據(jù)發(fā)展

    據(jù)悉,阿里云與中興通訊于5月16日公布了開源數(shù)據(jù)合作事宜。中興通訊正式宣布加入PolarDB開源社區(qū),并擔(dān)任首屆理事會(huì)成員單位。
    的頭像 發(fā)表于 05-16 16:34 ?482次閱讀

    NVIDIA加速微軟最新的Phi-3 Mini開源語言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語言模型。TensorRT-LLM 是一個(gè)開源
    的頭像 發(fā)表于 04-28 10:36 ?589次閱讀

    SDK5開源高頻注入的頭文件怎么沒有?

    ST SDK5開源,高頻注入的頭文件怎么沒有?只有。c文件。怎么能夠獲得?
    發(fā)表于 04-17 07:37

    選擇 KV 數(shù)據(jù)最重要的是什么?

    經(jīng)常有客戶提到 KV 數(shù)據(jù),但卻偏偏“不要 Redis”。比如有個(gè)做安全威脅分析平臺(tái)的客戶,他們明確表示自己對(duì)可靠性要求非常高,需要的不是開源 Redis 這種內(nèi)存緩存
    的頭像 發(fā)表于 03-28 22:11 ?714次閱讀
    選擇 KV 數(shù)據(jù)<b class='flag-5'>庫</b>最重要的是什么?

    深耕文檔型數(shù)據(jù)12載,SequoiaDB再開源

    、易用性四個(gè)方向的技術(shù)特性,宣布了2024年面向技術(shù)社區(qū)的開源計(jì)劃。此次發(fā)布活動(dòng)不僅是對(duì)SequoiaDB性能的全面介紹,更是對(duì)十余年來始終堅(jiān)守以JSON文檔型數(shù)據(jù)庫內(nèi)核為技術(shù)底座的發(fā)展歷程的深刻回顧。不忘來時(shí)路,方知向何行,巨杉數(shù)據(jù)
    的頭像 發(fā)表于 01-16 13:06 ?300次閱讀