日誌信息分類編程
1.等級由低到高:debug<info<warn<Error<Fatal;app
2.區別:debug
debug 級別最低,能夠隨意的使用於任何以爲有利於在調試時更詳細的瞭解系統運行狀態的東東;調試
info 重要,輸出信息:用來反饋系統的當前狀態給最終用戶的;日誌
後三個,警告、錯誤、嚴重錯誤,這三者應該都在系統運行時檢測到了一個不正常的狀態。orm
warn, 可修復,系統可繼續運行下去;接口
Error, 可修復性,但沒法肯定系統會正常的工做下去;it
Fatal, 至關嚴重,能夠確定這種錯誤已經沒法修復,而且若是系統繼續運行下去的話後果嚴重。io
3.使用form
何時使用 info, warn , error ?
info 用於打印程序應該出現的正常狀態信息, 便於追蹤定位;
warn 代表系統出現輕微的不合理但不影響運行和使用;
error 代表出現了系統錯誤和異常,沒法正常完成目標操做。
4.格式
總結起來, 錯誤日誌格式能夠爲:
log.error(「[接口名或操做名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].」);
log.error(String.format(「[接口名或操做名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].」, params));
或
log.error(「[Some Error Msg] happens to 錯誤參數或內容 when [in some condition]. [Probably Because]. [Probably need to do].」);
log.error(String.format(「[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].」, parameters));
[Probably Reason]. [Probably need to do]. 在某些狀況下能夠省略; 在一些重要接口和場景下最好能說明一下。
每一條錯誤日誌都是獨立的,儘量完整、具體、直接說明何種場景下發生了什麼錯誤,由什麼緣由致使,要採用什麼措施或步驟。
5.意義
錯誤日誌是排查問題的重要手段之一。 當咱們編程實現一項功能時, 一般會考慮可能發生的各類錯誤及相應緣由:
要排查出相應的緣由, 就須要一些關鍵描述來定位緣由。這就會造成三元組:錯誤現象 -> 錯誤關鍵描述 -> 最終的錯誤緣由。
須要針對每一種錯誤儘量提供相應的錯誤關鍵描述,從而定位到相應的錯誤緣由。也就是說,編程的時候,要仔細思考, 哪些描述是很是有利於定位錯誤緣由的, 儘量將這些描述添加到錯誤日誌中。