開發(fā)一個應用,日志的重要性不言而喻。然而有時會發(fā)現(xiàn)日志中會出現(xiàn)大量的垃圾日志。所謂垃圾日志,就是不需要知道的日志,或者這些日志對于應用查看、跟蹤沒有什么作用。也正是(但不僅僅是)出于這些問題的考量,常用的日志框架都設置了日志級別。但是在寫程序時,這些日志級別該選擇哪一種呢,這點并沒有一個統(tǒng)一的標準,也沒有人教你怎么做。下面就來說說我在開發(fā)中是怎么使用這些日志級別的。
一般來說,日志級別有以下幾個:
它們的權重從大到小。當我們設置好log級別后,比它權重低的其他log都會被忽略。
不同的語言,不同的庫有不同的log實現(xiàn),使用方法也比較簡單。但運用好log的關鍵不在庫本身,而是在恰當?shù)牡胤绞褂煤线m的log級別。
在不同的場景下,應該選擇相應的log級別。
FATAL(CRITICAL)
代表發(fā)生了最嚴重的錯誤,會導致整個服務停止(或者需要整個服務停止)。簡單地說就是服務死掉了。
ERROR
代表發(fā)生了必須馬上處理的錯誤。此類錯誤出現(xiàn)以后可以允許程序繼續(xù)運行,但必須馬上修正,如果不修正,就會導致不能完成相應的業(yè)務。
WARN
代表存在潛在的錯誤,或者觸發(fā)了容易引起錯誤的操作。程序可以繼續(xù)運行,但必須多加注意。
INFO
此輸出級別常用語業(yè)務事件信息。例如某項業(yè)務處理完畢,或者業(yè)務處理過程中的一些信息。
此輸出級別也常用于輸出一些對系統(tǒng)有比較大的影響的需要被看到的message,例如數(shù)據(jù)庫更新,系統(tǒng)發(fā)送了額外的請求等。
DEBUG (或者TRACE、FINE)
此輸出級別用于開發(fā)階段的調(diào)試,可以是某幾個邏輯關鍵點的變量值的輸出,或者是函數(shù)返回值的驗證等等。
另外,如果是你寫的一些util工具類,在需要加日志的情況下,也可以使用debug。
如果你寫的是Helper(業(yè)務的輔助類),這應該算是業(yè)務處理相關的,所以應該用info。
新聞熱點
疑難解答