日志的5个级别
本文最初發(fā)布于aib42個(gè)人網(wǎng)站,經(jīng)原作者授權(quán)由InfoQ中文站翻譯并分享。
\\日志記錄是軟件開發(fā)的一個(gè)概念,幾乎所有(可能并不是所有)軟件都能從日志記錄中獲得很多好處。在開始一個(gè)大項(xiàng)目時(shí),日志記錄通常是我第一個(gè)要搭建的子系統(tǒng)。關(guān)于它的好處,我可以說出一大堆,但我想把這個(gè)機(jī)會(huì)留給其他人(或者哪一天我想說了再說)。現(xiàn)在,我想說一說日志級(jí)別。
\\日志級(jí)別是對(duì)基本的“滾動(dòng)文本”式日志記錄的一個(gè)重要補(bǔ)充。每條日志消息都會(huì)基于其重要性或嚴(yán)重程度分配到一個(gè)日志級(jí)別。例如,“你的電腦著火了”是一個(gè)非常重要的消息,而“無法找到配置文件”的重要等級(jí)可能就低一些。
\\很多應(yīng)用程序和庫會(huì)根據(jù)自己或用戶的需求定義自己的日志級(jí)別(參考文末的“外部例子”了解這方面的內(nèi)容)。當(dāng)然,并沒有一種約定俗成的方法來做這件事,想怎么做都是可以的,但我想要說說我認(rèn)為的最重要的五個(gè)(或者六個(gè),或者四個(gè))日志級(jí)別,它們應(yīng)該是你自定義日志級(jí)別的基礎(chǔ)。
\\我還將討論給這些級(jí)別分配的顏色(或者說風(fēng)格),因?yàn)閹в胁煌伾?#xff08;或風(fēng)格)的日志更容易追蹤。如果采用了這樣的系統(tǒng),就可以很容易檢查你的程序狀態(tài),就算沒有受過訓(xùn)練的人也可以輕易分辨。誰知道呢,你可能留下電腦跑去吃午飯了,如果出現(xiàn)問題只能找別人來查看日志。
\\Error
\\錯(cuò)誤已經(jīng)發(fā)生了,這是毫無疑問的。錯(cuò)誤的來源可能是在外部,但不管怎樣都需要看一下是怎么回事。
\\可以用這個(gè)級(jí)別來表示需要引起人們注意(大多數(shù)時(shí)候需要采取行動(dòng))的錯(cuò)誤。大多數(shù)難以優(yōu)雅處理的異常都屬于Error范疇。
\\風(fēng)格:能引起人們注意的東西。我使用紅色文本來表示(我的終端背景是黑色的)。
\\例子:
\\- 無法找到\"crucial.dat\"文件\\t
- 錯(cuò)誤的處理數(shù)據(jù):\u0026lt;Exception\u0026gt;[堆棧追蹤或后續(xù)的調(diào)試消息]\\t
- \u0026lt;Exception\u0026gt;在連接數(shù)據(jù)庫時(shí)\
Warn
\\錯(cuò)誤有可能已經(jīng)發(fā)生了。我只是一條日志消息,無法分析到底發(fā)生了什么,或許需要其他人來看看是不是有問題。
\\這可能是一個(gè)平行空間里的錯(cuò)誤。它可能是當(dāng)前或未來潛在問題(比如響應(yīng)速度慢、連接斷開、內(nèi)存吃緊等等)的預(yù)兆,也可能是程序在處理某些任務(wù)時(shí)出現(xiàn)錯(cuò)誤(但可能不一會(huì)再發(fā)生類似的情況)。
\\風(fēng)格:能引起人們注意但又不會(huì)讓人感到厭煩的風(fēng)格,以免你在解決其他問題時(shí)沒空來處理這些錯(cuò)誤。與Error的風(fēng)格不同,我使用黃色的文本來表示W(wǎng)arn。
\\例子:
\\- 連接關(guān)閉,在2秒后重新連接\\t
- 無法找到\"logging.conf\"[在配置文件中指定的],回到默認(rèn)配置\\t
- 30秒后嘗試連接超時(shí)\\t
- 出現(xiàn)FileVersionTooOldException異常,回到Version12Parser\
Info
\\通知用戶一個(gè)操作或狀態(tài)發(fā)生了變化。別緊張,繼續(xù)手頭的活。
\\Info可以說是(一般的非技術(shù))用戶可以接觸到的最“啰嗦”的日志級(jí)別。如果有人把它們大聲念給你聽,你也不會(huì)介意,這是你最樂于見到的日志記錄。它不會(huì)包含很多技術(shù)細(xì)節(jié),可能只包含普通用戶會(huì)關(guān)注的信息(比如文件名等)。
\\風(fēng)格:可以和背景顏色區(qū)分開來,我使用白色文本。
\\例子:
\\- 代理初始化完畢\\t
- 加載存檔\"yeti02\"\\t
- 進(jìn)入高速模式\\t
- 當(dāng)前目錄是\"/tmp\"\\t
- 上行線路已建立\\t
- 渲染完成,耗時(shí)42.999秒\
Debug
\\如果你能讀懂這個(gè)級(jí)別的日志,那么你離程序已經(jīng)很近了。
\\這就是為什么你需要保存日志文件,在修復(fù)bug時(shí)需要這些日志。這是開發(fā)人員最關(guān)心的內(nèi)容。
\\在轉(zhuǎn)儲(chǔ)程序運(yùn)行流程和其他技術(shù)問題時(shí),應(yīng)該使用Debug級(jí)別的日志。除非日志太多了(在這種情況下使用Trace級(jí)別更合適)或者更適合使用更高級(jí)別的日志,否則Debug日志是非常值得保留的,畢竟是你自己在代碼中記錄這些日志的。如果和其他的Debug或更高級(jí)別的消息重疊,而且沒有包含更多的信息,那么可以考慮將其刪除。
\\風(fēng)格:可以很容易就忽略的風(fēng)格。我使用淺灰色或米黃色文本,也就是我的終端的默認(rèn)文本顏色。
\\例子:
\\- 從\"/etc/octarine/octarine.conf\"讀取配置\\t
- 使用\"/home/aib/.octarinerc\"覆蓋配置\\t
- 分析完成,創(chuàng)建圖…\\t
- 作為”user”連接到服務(wù)器:4242\\t
- 發(fā)送兩條消息\\t
- 渲染時(shí)故障:\\t
- Foo 0.990秒\\t
- Bar 42.009秒\
Trace
\\這些技術(shù)細(xì)節(jié)可能與程序不是很相干,除非你正好需要它們。
\\Trace的信息是更加具體的調(diào)試信息,你可能并不想看到它(除非你向保存日志的人賣硬盤的時(shí)候需要)。它會(huì)包含比如說調(diào)用了什么函數(shù)(函數(shù)名),或是和客戶端交換了什么網(wǎng)絡(luò)包等內(nèi)容。它善于找到一些低級(jí)錯(cuò)誤,但通常你可以在調(diào)試消息中縮小范圍,找到問題。
\\大多數(shù)Trace消息包含了你已經(jīng)知道的信息(Debug消息中說了是“登錄”,所以這肯定是登錄相關(guān)的數(shù)據(jù)包),所以可能對(duì)你不是很有用,除非你的假設(shè)是錯(cuò)誤的。(”它會(huì)不會(huì)是登出消息?!“、”這里應(yīng)該調(diào)用foo。為什么foo的Trace信息沒有打印出來呢?”)
\\風(fēng)格:使用比Debug消息更加不顯眼的風(fēng)格。我使用深灰色,通常用來表示禁用的顏色。
\\例子:
\\- 調(diào)用參數(shù)(\"baz\
總結(jié)
- 上一篇: ORACLE安装报错解决
- 下一篇: 工业互联网不只是网络:网络是基础,平台是