異常怎麼記錄

一個正常的業務異常的級別應該是哪個?

現如今的項目裏,正常的業務異常會以 INFO 記錄,或者以 WARN。
其中一個原因是,監控平臺監控的一般是 ERROR 或者 WARN 級別,如果把業務異常會以 ERROR 級別記錄,明顯不符合監控平臺的需求。
所以我當初覺得把異常以 INFO 記錄雖說彆扭,但也覺得這好像是合理的,但如今一想其實我們錯在不應該以在監控平臺以 ERROR 級別監控。
而應該以 FATAL 級別記錄系統出現 BUG 或者其它嚴重情況,因爲在日誌級別裏 FATAL 級別才意味着系統出現問題,而 ERROR 僅僅是代表着
出現異常了,這樣才更加符合規範。
另外我覺得一般情況下業務異常的 ERROR 日誌也沒必要單獨記錄到一份文件裏,因爲這樣會缺失一個上下文的分析日誌環境,因爲業務異常一般都跟整個
流程有關,只有通過整個流程的日誌記錄才能分析的出來這個異常是否合理,但一般系統底層 BUG 之類的單獨記錄日誌會比較好一些,因爲此類異常一般與具體業務
場景及流程無關,如果與業務流程的日誌放到一起反而難以查找,因爲業務相關的日誌估計佔到日誌的九成九以上。

用模塊級別的 logger

現今項目有多個模塊,每個模塊基本上是一個模塊相關的 logger 和 Exception(後話) 通吃一切,在log的配置裏,記錄了模塊名,卻沒記錄類名,無形之中
就將日誌的定位放大到模塊級別,根本就無法定位到某個類,除非出現異常,但正常的的日誌根本就不知道在哪裏記錄的,然後就只能搜索代碼自行定位。
日誌的記錄文件,按模塊來,每個一份,然後有一些總的什麼 root、all之類的文件記錄,在查找日誌時非常麻煩,按模塊的記錄的文件,明顯都是整個流程中的
一部分,即便是root、all之類的也記錄的不全,所以日誌文件存在:重複式記錄、一個流程的日誌不在一個文件裏。

工具類裏記錄日誌

工具類裏不應當記錄日誌,如果工具類拋出了運行時異常,那麼一般就是程序 bug 了,此異常應當由頂層捕獲記錄。
工具類應當可拋異常但不記錄,如果說是想捕獲後忽略此異常,但又想記錄下以防萬一,那麼我覺得還是直接拋出的好,
因爲有此種需要表明其一旦產生此異常就是一個程序 BUG,不應當被忽略。如果是業務需要,那麼應當在業務層處理,
按照業務需求忽略並記錄此異常。

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