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