[Java小記] 記一下Log的各個級別及其用法

1. Log級別

參考下列表格

Log級別 說明 用法
error 錯誤:系統運行錯誤,無法自行恢復,並且會影響到如下游系統或系統的使用者。一般需要人爲干預才能恢復正常運行。 凌晨2點法則(2AM Rule):當發生這個錯誤時,你覺得有必要在2點熟睡之際叫醒的時候,log級別設爲error。
warn 警告:系統運行異常,能自行恢復,繼續運行。有可能異常會影響到使用者。但一般不需要立刻進行人爲對應。這個警告需要被監控者審查,並判斷其是否會影響到使用者。如果是,需要人爲修正錯誤帶來的影響 例如:I/O異常導致文件寫入失敗,重試後成功。 一般來說文件寫入成功率可以人爲是99.99%,但有一定的概率因小概率異常導致寫入失敗的時候需要設爲Warn通知監控者(Monitor)排查這個異常出現的原因
info 信息:記錄系統運行的情況。幫助我們瞭解該時間系統內哪些代碼在運行中。 例如:系統的生命週期(Start up/Shut down),Session的生命週期(Login/Logout),某種數據的寫入(Database call),遠程API調用等。
debug Debug:除開info之外的任何有助於追蹤系統運行情況的信息,一般用於開發和QA環境 高層級API被調用的次數可以認爲明顯小於低層級API,比如一個批處理程序,處理1000w數據的時候,ProcessData(Data)這個低層次API會被調用1000w次。而ProcessData裏也調用了其他3個private方法,如果我們在生產環境log全部的method start,end。會導致產生大量無用的Log。這些方法的進入和退出的log我們只希望在開發和QA環境下測試控制流的時候看到。
trace 詳細信息(more detailed information) 這個非常不常用,一般debug已經會產生大量的log。而trace是連開發環境下少量數據的時候都不太願意使用的。比如把一個對象的所有信息log出來等。假設你的程序是一個batch把文件裏數據給導入到數據庫,讀入的時候log每一行數據,數據變換(mapping)的時候在log每一個變換後的數據。這個時候用trace。生產環境下一般只會log部分數據來定位處理的是那一條數據。

2. 總結

許多人認爲只要把程序寫好即可。誠然這沒有錯,但是如果想要寫高質量高可維護的軟件的時候,Log是必不可少的。有Log能幫助我們對程序運行的方式進行一次再現,而不是去找到使用者問他做了什麼操作產生了錯誤。對於我們排查程序錯誤有着不可替代的作用。設計好的Log能讓我們排查錯誤事半功倍。而設計不好的Log則能讓你的接班者(後任開發/運維/異常排查人員/半年後的自己(誤))想殺人。

在敏感的金融領域,任何系統異常都可能會導致大量的金錢損失。爲了避免或者使損失降到最低,一般都會對Error/Warn級別的Log進行監控,一旦發生,就會有人去檢查。正確使用Log級別,對提高系統的穩定性有着莫大的好處。

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