色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式軟件框架中一定不能缺少的日志管理系統的設計與實現

嵌入式應用研究院 ? 來源:漫游嵌入式 ? 2023-04-19 09:14 ? 次閱讀

日志分級概念

所謂日志分級,就是將日志按照不同的層次,有選擇的輸出。

參考一些高級語言的分級日志設計,我們根據對程序運行信息的類型把控,可以把日志分為5個級別DEBUG、INFO、WARN、ERROR、FATAL。

  • DEBUG:主要用于程序開發測試階段的打印輸出,用于驗證程序的設計邏輯是否滿足上層應用的設計需求,在經過測試檢驗后的發布程序可以把它關掉。
  • INFO:這個級別的打印輸出是用來告訴測試人員或者開發人員一些提示的信息
  • WRAN:這是一種警告的打印輸出,它一般是用來輸出諸如用戶輸入錯誤的數據之類的警告打印,這個級別的打印輸出在程序發布后也建議保留,以方面后期程序的維護追蹤。
  • ERROR:運行出錯的打印,這個級別的打印在發布的軟件不可關閉,否則無法從發布軟件中獲取一些反饋信息來指導我們新的程序優化設計。
  • FATAL :程序運行遇到這種級別的問題,很難修復,一般伴隨著程序的閃退或重啟,此時FATAL ERROR的打印則非常關鍵了,可以幫助我們定位到程序跑飛的原因,FATAL ERROR級別的打印在任何時刻都不可以關閉。

為什么要有日志分級?

一個好的日志分級設計,有助于我們快速定位問題,主要是方便后續開發和維護。在設計軟件的時候,可以根據問題出現的輕重緩急,有決策的去添加分層信息,在必要的時候有針對性的打開和關閉一些日志。

如何設計?

目前有兩種粗淺的設計策略,一種是或的關系,即各個日志等級彼此獨立,可以單獨打開關閉;一種是順序打印,根據設置打印等級,低于或者高于這個等級的才打印。

兩種沒有孰好孰壞,根據需要選擇合適策略即可。本文將以后者介紹。

設置打印級別

/*module_debug.h*/
/*1.設置打印級別*/
enum{
LOG_LEVEL_NONE,
LOG_LEVEL_DEBUG,
LOG_LEVEL_INFO,
LOG_LEVEL_WARN,
LOG_LEVEL_ERROR,
LOG_LEVEL_FATAL,
};

/*2.log打印重寫*/
voidlog_fun(intlevel,constchar*opt,constchar*tag,intline,constchar*func,constchar*fmt,...);

/*3.各打印級別宏*/
/*
*@LOG_DBG
*/
#defineLOG_DBG(tag,fmt,...)
log_fun(LOG_LEVEL_DEBUG,"D",tag,__LINE__,__func__,fmt,##__VA_ARGS__)

/*
*@LOG_INFO
*/
#defineLOG_INFO(tag,fmt,...)
log_fun(LOG_LEVEL_INFO,"I",tag,__LINE__,__func__,fmt,##__VA_ARGS__)

/*
*@LOG_WARN
*/
#defineLOG_WARN(tag,fmt,...)
log_fun(LOG_LEVEL_WARN,"W",tag,__LINE__,__func__,fmt,##__VA_ARGS__)

/*
*@LOG_ERR
*/
#defineLOG_ERR(tag,fmt,...)
log_fun(LOG_LEVEL_ERROR,"E",tag,__LINE__,__func__,fmt,##__VA_ARGS__)

/*
*@LOG_FATAL
*/
#defineLOG_FATAL(tag,fmt,...)
log_fun(LOG_LEVEL_FATAL,"F",tag,__LINE__,__func__,fmt,##__VA_ARGS__)

注釋:... 和 __VA_ARGS__.省略點表示可變參數,__VA_ARGS__表示可變參數的宏,是C99規范中新增的,用來替換宏定義中的可變參數(...); ##運算符將兩個宏參數連接在一起。##__VA_ARGS__ 這里主要是為了解決當__VA_ARGS__為空時編譯問題,使用##防止編譯出錯。

根據打印級別控制輸出范圍

/*module_debug.c*/
#include
#include
#include
#include
#include
#include

#include

intg_current_dbg_level=LOG_LEVEL_DEBUG;

voidlog_fun(intlevel,constchar*opt,constchar*tag,intline,constchar*func,constchar*fmt,...)
{
if(level>g_current_dbg_level){
charmsg_buf[20*1024];
va_listap;
va_start(ap,fmt);
sprintf(msg_buf,"%s/%s(%d):%s()",opt,tag,line,func);
vsprintf(msg_buf+strlen(msg_buf),fmt,ap);
fprintf(stderr,"%s
",msg_buf);/*輸出到標準輸出*/
va_end(ap);
}
}

/*設置打印級別*/
voidModuleDebugInit(intlevel)
{
g_current_dbg_level=level;
}

測試

/*main.c*/
#include
#defineTAG"test"

intmain(intargc,char*argv[])
{
  LOG_DBG(TAG,"log_debug%d
",LOG_LEVEL_DEBUG);
LOG_INFO(TAG,"log_info%d
",LOG_LEVEL_INFO);
LOG_WARN(TAG,"log_warn
");
LOG_ERR(TAG,"log_err
");
return0;
}

輸出打印信息:

I/test(61):main()log_info2

W/test(62):main()log_warn

E/test(63):main()log_err

其中I表示INFO、W表示WARN、E表示ERROR;緊接著跟著模塊(test),也可以是文件名;然后是行號、函數名,最后是打印信息。

當然具體打印信息和風格用戶可以根據需要,自行設計。


			

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    117

    文章

    3787

    瀏覽量

    81072
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26651
  • 日志
    +關注

    關注

    0

    文章

    138

    瀏覽量

    10648

原文標題:嵌入式軟件框架中一定不能缺少的日志管理系統的設計與實現

文章出處:【微信號:嵌入式應用研究院,微信公眾號:嵌入式應用研究院】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么叫嵌入式軟件

    需要給它設計套小小的可以嵌在里面的腦系統,這個大腦有多聰明,就要看它的軟件了。這個嵌在里面的腦系統就是
    發表于 04-20 08:45

    嵌入式系統串行設備管理怎么實現

    隨著微電子技術的發展,嵌入式系統的功能越來越強大,像 UART口、IrDA、USB、I2C以及SPI這些串行接口或設備同時存在于嵌入式系統
    發表于 09-04 07:53

    嵌入式系統基礎階段的學習建議

    的。(4)至于嵌入式實時操作系統RTOS,一定不要開始就學,這樣會走很多彎路,也會使你對嵌入式系統
    發表于 10-29 07:36

    嵌入式框架

    1.overview 圖1-1 嵌入式框架嵌入式系統分為硬件以及軟件兩大部分,大多數人參與的是嵌入式
    發表于 10-27 08:26

    嵌入式低功耗電源管理框架的設計資料分享

    概述目標本篇的目標是介紹低功耗電源管理框架設計的概念理解低功耗管理的重要性理解如何開發適合的低功耗管理框架理解如何去
    發表于 12-21 07:39

    嵌入式些日常小技巧分享

    拓寬自己的技術領域同時也要在像更加面向對象或者是高級AI方向的算法也要有一定的涉獵,所以目前對于我而言Python和C++成了我在目前學習嵌入式操作系統的同時也要必須掌握的層技術又因
    發表于 12-21 08:07

    嵌入式軟件和非嵌入式軟件區別

    1.什么是嵌入式技術?嵌入式技術是以應用為中心,以計算機技術為基礎的系統技術。它初起源于單片機技術,是各類數字化的電子、機電產品的核心,主要用于實現對硬件設備的控制、監視或
    發表于 12-21 07:41

    嵌入式軟件建立統框架方法的研究

    介紹了嵌入式系統軟件的特點#說明要建立統嵌入式軟件系統框架
    發表于 11-07 16:02 ?27次下載

    嵌入式系統框架----硬件篇

    1.系統框架圖對于嵌入式系統,最重要的當然是運算以及存儲單元,基本的嵌入式
    發表于 10-20 11:51 ?3次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b><b class='flag-5'>框架</b>----硬件篇

    嵌入式系統框架----軟件

    1.overview 圖1-1 嵌入式框架嵌入式系統分為硬件以及
    發表于 10-20 19:21 ?5次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b><b class='flag-5'>框架</b>----<b class='flag-5'>軟件</b>篇

    嵌入式linux設備中應用運行日志實現

    嵌入式linux設備中應用運行日志實現? ? ? 最近在做個項目時,需要記錄設備運行中情況,以方便對故障進行跟蹤定位,完善.所以決定采用記錄程序運行
    發表于 11-01 17:22 ?8次下載
    <b class='flag-5'>嵌入式</b>linux設備中應用運行<b class='flag-5'>日志</b>的<b class='flag-5'>實現</b>

    嵌入式開發|嵌入式軟件框架《二》前后臺任務框架-cola os系統

    創建4.cola_os stime定時器創建前言在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是個必須認真考慮的問題。軟件架構對
    發表于 11-03 13:51 ?18次下載
    <b class='flag-5'>嵌入式</b>開發|<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b><b class='flag-5'>框架</b>《二》前后臺任務<b class='flag-5'>框架</b>-cola os<b class='flag-5'>系統</b>

    嵌入式設備系統日志記錄方法

    嵌入式設備應用場景中,系統日志時常可以監控設備軟件的運行狀態,及時記錄問題點以及關鍵信息,方便開發人員后期定位以及解決問題。本文將講述
    的頭像 發表于 03-28 15:20 ?5370次閱讀

    嵌入式SD NAND】基于FATFS/Littlefs文件系統日志框架實現

    文章目錄 【嵌入式】基于FATFS/Littlefs文件系統日志框架實現 1. 概述 2. 設計概要 3. 設計
    的頭像 發表于 03-14 18:13 ?1067次閱讀
    【<b class='flag-5'>嵌入式</b>SD NAND】基于FATFS/Littlefs文件<b class='flag-5'>系統</b>的<b class='flag-5'>日志</b><b class='flag-5'>框架</b><b class='flag-5'>實現</b>

    嵌入式SD NAND】基于FATFS/Littlefs文件系統日志框架實現

    文章目錄【嵌入式】基于FATFS/Littlefs文件系統日志框架實現1.概述2.設計概要3.設計實現
    的頭像 發表于 03-14 18:12 ?1162次閱讀
    【<b class='flag-5'>嵌入式</b>SD NAND】基于FATFS/Littlefs文件<b class='flag-5'>系統</b>的<b class='flag-5'>日志</b><b class='flag-5'>框架</b><b class='flag-5'>實現</b>
    主站蜘蛛池模板: 精品少妇爆AV无码专区| 日本女人下面毛茸茸| 亚洲蜜桃AV色情精品成人| 国产亚洲欧美ai在线看片| 野花社区视频WWW高清| 啦啦啦 中国 日本 高清 在线| 91传媒蜜桃香蕉在线观看| 欧美手机在线| 国产乱妇乱子在线播视频播放网站| 亚洲免费黄色| 欧美videosgratis杂交| 国产精品网红女主播久久久| 伊人影院综合在线| 日美一级毛片| 久久re这里视频精品15| np高h肉辣一女多男| 亚洲AV精品无码喷水直播间| 美女被免费喷白浆视频| 国产叼嘿久久精品久久| 在线日本高清日本免费| 涩涩电影网| 噜噜噜狠狠夜夜躁| 国产乱码二卡3卡四卡| 99久久精品国产国产毛片| 亚洲 日本 中文字幕 制服| 男人网站在线| 国厂精品114福利电影| c了瑜伽老师嗷嗷叫一节课视频| 羞羞漫画视频| 欧美精品成人a多人在线观看| 国产在线精品亚洲| 超碰97免费人妻| 中国jjzz| 亚洲第一页视频| 青青草偷拍国产亚洲欧洲| 九九99热久久精品在线6| 国产69精品久久久久APP下载| 717影院理论午夜伦不卡久久| 亚洲高清无在码在线电影| 欧美亚洲精品午夜福利AV| 久久久久久久久久久福利观看|