1. 程式人生 > >編程日誌的等級劃分

編程日誌的等級劃分

for循環 處理 查錯 因此 否則 all 適用於 其他 內容

在不同的版本中日誌的分級也有區別,下面以日誌記錄器Logger的分類來進行討論

六個日誌等級:TRACE / DEBUG / INFO / WARNING / ERROR / FATAL

還有兩個特殊等級 ALL、OFF,全部日誌打開和關閉,這裏不做討論

TRACE
TRACE 在線調試。
該級別日誌,默認情況下,既不打印到終端也不輸出到文件。此時,對程序運行效率幾乎不產生影響。 n

DEBUG
DEBUG 終端查看、在線調試。
該級別日誌,默認情況下會打印到終端輸出,但是不會歸檔到日誌文件。因此,一般用於開發者在程序當前啟動窗口上,查看日誌流水信息。

INFO
INFO 報告程序進度和狀態信息。
一般這種信息都是一過性的,不會大量反復輸出。
例如:連接商用庫成功後,可以打印一條連庫成功的信息,便於跟蹤程序進展信息。

WARNING
WARNING 警告信息
程序處理中遇到非法數據或者某種可能的錯誤。
該錯誤是一過性的、可恢復的,不會影響程序繼續運行,程序仍處在正常狀態。

ERROR
ERROR 狀態錯誤
該錯誤發生後程序仍然可以運行,但是極有可能運行在某種非正常的狀態下,導致無法完成全部既定的功能。

FATAL
FATAL 致命的錯誤
表明程序遇到了致命的錯誤,必須馬上終止運行。


日誌輸出的註意事項
1、日誌函數的返回值
日誌函數的返回值一般用於錯誤的標識,一般為int類型的錯誤碼,因為一個程序出錯情況不止一種,故不建議使用bool類型
正確情況:一般約定正常情況函數的返回值為0;在不同的約定下有可能不同,例如:有多種正確的狀態,不過大多數情況下返回值為0。
錯誤情況:返回值小於0,建議對可預期的錯誤進行編碼,避免所有錯誤千篇一律-1,後續查錯困難
對於錯誤的情況需要記錄相關的錯誤日誌

2、如何對日誌形式進行選擇
日誌有六大類,根據每一類的日誌的特性,我們需要在合適的時候選擇相應的日誌類型
考慮的因素:
1)輸出頻率
對於輸出頻率高的日誌,一定要用TRACE級別,否則會嚴重的影響程序效率
TRACE級別的日誌不會輸入到日誌文件中,如果該類日誌輸出頻率高,使用其他級別,日誌文件很快會被寫滿覆蓋。
在for循環或者while循環中的日誌,一定要使用TRACE級別。
2)嚴重程度
執行錯誤信息:該情況下書寫日誌需要用WARNING級別及以上的ERROR、FATAL日誌打印。這類級別的日誌會記錄到日誌文件中,方便查找問題,解決問題。
非執行錯誤信息: 如調試、追蹤等日誌信息,一定采用INFO級別以下的DEBUG、TRACE日誌打印 。
INFO級別只適用於輸出頻率不高的情況或者需要記錄到日誌文件中,便於問題追憶的需求。

日誌信息的內容
1)異常、錯誤信息
ERROR、WARNING等
2)調試、跟蹤信息
函數參數讀入、執行步驟、數據流向,流程跳轉、函數返回值

對於錯誤、異常情況,應盡量記錄盡可能多的“上下文環境”信息.
如果是函數調用失敗,日誌中必須包含返回值信息、以及函數調用的相關參數信息。
任何程序在返回錯誤碼前,一定要通過日誌記錄具體的錯誤原因,並給出盡量多的場景信息。

學習參考自【皓月如我的CSDN博客】https://blog.csdn.net/fm0517/article/details/49928181

編程日誌的等級劃分