Logger級別定義
使用Slf4j或者諸多日誌框架時,可以看到不少日誌級別,我們常用INFO和ERROR,對其他級別沒有過多的使用,但是不意味著它們沒有價值,存在即合理,我們需要正確的使用日誌級別來構建應用,而正確的使用來自於一致的理解。
Fatal/Critical級別:應用或者系統上的失敗需要立即被關注,這種情況下需要立即叫醒系統管理員。因為我們希望系統管理員能夠睡個好覺,所示這種級別的問題是很少見的,至少非常不頻繁。如果這種問題日常經常發生,最終證明實際上又不是個大問題,那就失去它的作用。一般來說,一個Fatal的錯誤會出現在應用程式最後的時刻,往往是日誌中的最後一段內容。
Error級別:這是一個需要被關注的問題。系統管理員最好能夠被自動通知,但是不需要立即被叫起床,因為這種錯誤往往不是全面的。通過檢視錯誤日誌,能夠粗略的得到錯誤的頻度以及導致這個錯誤出現的原因,它可能是系統的一個錯誤,但不一定是源頭,通過定位錯誤資料的來源以及場景,在接下來的工作中進行修復。舉個例子,這些錯誤資訊是否出現是決定接下來發布的衡量標準。
Warning級別:這可能是一個問題,或許不是。舉個例子,如果環境中的資訊出現變化,比如資料庫連線斷開,這個場景應該被記錄為Warning,而非Error。通過觀察Warning日誌能夠讓我們快速找到導致錯誤的起始原因,Warning使用時需要特別注意,放置使它變得沒有意義。在服務端應用斷開連線的場景下,使用Warning是比較合適的,但是如果在一個桌面程式上,當連線斷開時進行Warning,就沒有太大必要,因為這個場景經常出現,使用Info就足夠了。
Info級別:在正常情況下需要被記錄的重要資訊,例如:系統初始化成功,服務啟動或者停止以及成功的處理了重要的業務。檢視日誌中的Info資訊,能夠看到應用提供服務的主要狀態變更,但是也不要記錄過多的Info資訊。該級別一般是應用預設的日誌級別。
Debug級別:該資訊能夠提供給開發人員,幫助其定位系統執行的路徑以及產生問題的場景和資料,對於系統管理員來說這個就不一定能夠產生價值了。
Trace級別:Trace是一個需要被嚴肅對待的級別,它在記錄的同時,提供了應用進入該狀態時的上下文,這樣就能更加容易的分析出問題的原因。Trace容易受到程式碼修改導致的影響,因此需要開發團隊能夠定期的維護日誌輸出,這樣在問題出現時就更容易定位問題。同時也需要鼓勵開發團隊將不再需要的Trace語句清除並新增新的需要的日誌輸出,比如:記錄使用者的輸入等。同樣這個日誌級別,對於開發人員有用,但是對於系統管理員就意義不大了。
相關文章
- Python 日誌列印之自定義logger handlerPython
- Git定義命令別名Git
- 基於 logger sdk-logger 封裝封裝
- php定義常量方法的區別PHP
- Golang通脈之型別定義Golang型別
- c 語言中巨集定義和定義全域性變數的區別變數
- Quick Logger 強大的企業級非同步記錄器UI非同步
- 定義一個單例型別的Qml單例型別
- PHP 定義常量 define 和 const的區別PHP
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- Flutter中的LoggerFlutter
- vue3 子元件 ref ts型別定義Vue元件型別
- JAVASE——資料型別,變數定義及使用Java資料型別變數
- 定義函式的兩種形式及區別函式
- yii別名的定義和別名的獲取以及別名的使用
- SAP PM 初級系列2 – 定義計劃員組
- word大綱級別在哪裡設定 word一二三級標題設定大綱
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- 【ARMv8】異常級別的定義EL0、EL1、EL2、EL3
- pytest-parallel 外掛能像 testng 一樣支援定義執行緒執行的級別嗎Parallel執行緒
- [需求建議]建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- 自定義Egg.js的請求級別日誌JS
- 物聯網學習教程—用typedef定義型別型別
- <Python>識別符號、變數的定義與使用Python符號變數
- 函式引數 引數定義函式型別函式型別
- dotnet C# 如何在頂級語句定義屬性C#
- OpenFeign 定義後備工廠進行服務降級
- SAP PM 初級系列9 - 定義功能位置的安裝
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- 需求定義
- Springbean定義SpringBean
- 巨集定義
- 認真一點學 Go:12. 自定義型別和結構體 - 定義Go型別結構體
- 建構函式定義的隱式型別轉換函式型別
- C++中過載、重寫、重定義的區別C++
- 定義多維的點模板類,任意資料型別資料型別
- 如何在Typescript中定義Promise的返回值型別TypeScriptPromise型別
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀