在不同的版本中日志的分級也有區別,下面以日志記錄器Logger的分類來進行討論
六個日志等級:TRACE 、 DEBUG 、 INFO 、 WARNING 、ERROR 、FATAL
還有兩個特殊等級 ALL、OFF,全部日志打開和關閉,這里不做討論
(1)TRACE
TRACE 在線調試。
該級別日志,默認情況下,既不打印到終端也不輸出到文件。此時,對程序運行效率幾乎不產生影響。
(2)DEBUG
DEBUG 終端查看、在線調試。
該級別日志,默認情況下會打印到終端輸出,但是不會歸檔到日志文件。因此,一般用於開發者在程序當前啟動窗口上,查看日志流水信息。
(3)INFO
INFO 報告程序進度和狀態信息。
一般這種信息都是一過性的,不會大量反復輸出。
例如:連接商用庫成功后,可以打印一條連庫成功的信息,便於跟蹤程序進展信息。
(4)WARNING
WARNING 警告信息
程序處理中遇到非法數據或者某種可能的錯誤。
該錯誤是一過性的、可恢復的,不會影響程序繼續運行,程序仍處在正常狀態。
(5)ERROR
ERROR 狀態錯誤
該錯誤發生后程序仍然可以運行,但是極有可能運行在某種非正常的狀態下,導致無法完成全部既定的功能。
(6)FATAL
FATAL 致命的錯誤
表明程序遇到了致命的錯誤,必須馬上終止運行。
Log4j建議只使用四個級別,優先級從高到低分別是 ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。比如配置成了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來,也是說大於等於的級別的日志才輸出。
日志輸出考慮的因素:
1)輸出頻率
對於輸出頻率高的日志,一定要用TRACE級別,否則會嚴重的影響程序效率
TRACE級別的日志不會輸入到日志文件中,如果該類日志輸出頻率高,使用其他級別,日志文件很快會被寫滿覆蓋。
在for循環或者while循環中的日志,一定要使用TRACE級別。
2)嚴重程度
執行錯誤信息:該情況下書寫日志需要用WARNING級別及以上的ERROR、FATAL日志打印。這類級別的日志會記錄到日志文件中,方便查找問題,解決問題。
非執行錯誤信息: 如調試、追蹤等日志信息,一定采用INFO級別以下的DEBUG、TRACE日志打印 。
INFO級別只適用於輸出頻率不高的情況或者需要記錄到日志文件中,便於問題追憶的需求。
日志信息的內容:
1)異常、錯誤信息
ERROR、WARNING等
2)調試、跟蹤信息
函數參數讀入、執行步驟、數據流向,流程跳轉、函數返回值
對於錯誤、異常情況,應盡量記錄盡可能多的“上下文環境”信息.
如果是函數調用失敗,日志中必須包含返回值信息、以及函數調用的相關參數信息。
任何程序在返回錯誤碼前,一定要通過日志記錄具體的錯誤原因,並給出盡量多的場景信息。
工作筆記:
1.JSON解析要有try – catch (fastjson 解析出錯會有異常)
2.網絡請求要有URL地址和花費時間LOG
3.重要函數要有進出LOG
4.重要函數要有try和花費時間LOG
5.所有catch到的異常都要有LOG輸出
6.服務入口函數要有總花費時間LOG
重要:LOG要注意LOG等級,壓測、上線、調試分別用不同的日志等級,避免壓測時LOG過多導致TPS受影響或線上LOG過多影響響應時間。
參考博客:
(1)編程日志的等級划分
(2)Log日志級別從高到低排序 ERROR、WARN、INFO、DEBUG