正確的選擇log級別

開發一個應用,日誌的重要性不言而喻。然而有時會發現日誌中會出現大量的垃圾日誌。所謂垃圾日誌,就是不需要知道的日誌,或者這些日誌對於應用查看、跟蹤沒有什麼作用。也正是(但不僅僅是)出於這些問題的考量,常用的日誌框架都設置了日誌級別。但是在寫程序時,這些日誌級別該選擇哪一種呢,這點並沒有一個統一的標準,也沒有人教你怎麼做。下面就來說說我在開發中是怎麼使用這些日誌級別的。

一般來說,日誌級別有以下幾個:

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。

另外,還有兩個可用的特別的日誌記錄級別:
1.static Level ALL
ALL Level是最低等級的,用於打開所有日誌記錄。
2.static Level OFF
OFF Level是最高等級的,用於關閉所有日誌記錄。

日誌記錄器(Logger)的行爲是分等級的:
分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先級從高到低分別是 ERROR、WARN、INFO、DEBUG。通過在這裏定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這裏定義了INFO級別, 則應用程序中所有DEBUG級別的日誌信息將不被打印出來。

優先級高的將被打印出來。項目上生產環境時候一定得把debug的日誌級別重新調爲warn或者更高,避免產生大量日誌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章