日志信息分類
1.等級由低到高:debug<info<warn<Error<Fatal;
2.區別:
debug 級別最低,可以隨意的使用於任何覺得有利於在調試時更詳細的了解系統運行狀態的東東;
info 重要,輸出信息:用來反饋系統的當前狀態給最終用戶的;
后三個,警告、錯誤、嚴重錯誤,這三者應該都在系統運行時檢測到了一個不正常的狀態。
warn, 可修復,系統可繼續運行下去;
Error, 可修復性,但無法確定系統會正常的工作下去;
Fatal, 相當嚴重,可以肯定這種錯誤已經無法修復,並且如果系統繼續運行下去的話后果嚴重。
3.使用
什么時候使用 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.意義
錯誤日志是排查問題的重要手段之一。 當我們編程實現一項功能時, 通常會考慮可能發生的各種錯誤及相應原因:
要排查出相應的原因, 就需要一些關鍵描述來定位原因。這就會形成三元組:錯誤現象 -> 錯誤關鍵描述 -> 最終的錯誤原因。
需要針對每一種錯誤盡可能提供相應的錯誤關鍵描述,從而定位到相應的錯誤原因。也就是說,編程的時候,要仔細思考, 哪些描述是非常有利於定位錯誤原因的, 盡可能將這些描述添加到錯誤日志中。