Logger級別定義

b10l07發表於2018-04-07

       使用Slf4j或者諸多日誌框架時,可以看到不少日誌級別,我們常用INFO和ERROR,對其他級別沒有過多的使用,但是不意味著它們沒有價值,存在即合理,我們需要正確的使用日誌級別來構建應用,而正確的使用來自於一致的理解。

       Fatal/Critical級別:應用或者系統上的失敗需要立即被關注,這種情況下需要立即叫醒系統管理員。因為我們希望系統管理員能夠睡個好覺,所示這種級別的問題是很少見的,至少非常不頻繁。如果這種問題日常經常發生,最終證明實際上又不是個大問題,那就失去它的作用。一般來說,一個Fatal的錯誤會出現在應用程式最後的時刻,往往是日誌中的最後一段內容。

       Error級別:這是一個需要被關注的問題。系統管理員最好能夠被自動通知,但是不需要立即被叫起床,因為這種錯誤往往不是全面的。通過檢視錯誤日誌,能夠粗略的得到錯誤的頻度以及導致這個錯誤出現的原因,它可能是系統的一個錯誤,但不一定是源頭,通過定位錯誤資料的來源以及場景,在接下來的工作中進行修復。舉個例子,這些錯誤資訊是否出現是決定接下來發布的衡量標準。

       Warning級別:這可能是一個問題,或許不是。舉個例子,如果環境中的資訊出現變化,比如資料庫連線斷開,這個場景應該被記錄為Warning,而非Error。通過觀察Warning日誌能夠讓我們快速找到導致錯誤的起始原因,Warning使用時需要特別注意,放置使它變得沒有意義。在服務端應用斷開連線的場景下,使用Warning是比較合適的,但是如果在一個桌面程式上,當連線斷開時進行Warning,就沒有太大必要,因為這個場景經常出現,使用Info就足夠了。

       Info級別:在正常情況下需要被記錄的重要資訊,例如:系統初始化成功,服務啟動或者停止以及成功的處理了重要的業務。檢視日誌中的Info資訊,能夠看到應用提供服務的主要狀態變更,但是也不要記錄過多的Info資訊。該級別一般是應用預設的日誌級別。

       Debug級別:該資訊能夠提供給開發人員,幫助其定位系統執行的路徑以及產生問題的場景和資料,對於系統管理員來說這個就不一定能夠產生價值了。

       Trace級別:Trace是一個需要被嚴肅對待的級別,它在記錄的同時,提供了應用進入該狀態時的上下文,這樣就能更加容易的分析出問題的原因。Trace容易受到程式碼修改導致的影響,因此需要開發團隊能夠定期的維護日誌輸出,這樣在問題出現時就更容易定位問題。同時也需要鼓勵開發團隊將不再需要的Trace語句清除並新增新的需要的日誌輸出,比如:記錄使用者的輸入等。同樣這個日誌級別,對於開發人員有用,但是對於系統管理員就意義不大了。

相關文章