Java中日誌的處理
日誌是程式執行過程的資訊,其資料能夠幫助開發人員提前發現並避開異常,在錯誤發生後能夠找到事件的起因,並糾正錯誤,達到預期的執行效果。在java開發中,日誌系統是java專案中必不可少的組成部分。日誌可以幫助我們快速的定位問題,記錄程式執行過程中的情況,以便專案的監控和優化。我們在日常開發中主要使用的java日誌框架元件有:log4j、SLF4J、logback、Commons Logging、log4j2等。
slf4j,即簡單日誌門面(Simple Logging Facade for JAVA),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。一般來說,slf4j配合log4j、logback進行使用,可以理解為slf4j是標準,log4j和logback是實現。官方推薦使用logback作為日誌系統,因為logback有更快執行速度,logback-classic 也實現了slf4j。
日誌的管理分為兩大部分:
-
日誌記錄器
-
日誌處理器
日誌記錄器負責按設定級別對日誌進行記錄和向上傳遞, 日誌處理器負責按設定級別對日誌進行列印。
日誌級別一般分為7個列印級別(不同的日誌框架元件可能列印的日誌級別區別不大):
OFF-關閉所有日誌;
FATAL-記錄嚴重的錯誤,並且會導致應用程式退出;
ERROR-記錄嚴重的錯誤,但不會影響程式的執行;
WARN-記錄警告;
INFO-記錄程式中比較有意義的資訊;
DEBUG-記錄程式中的細節資訊;
ALL-記錄所有的日誌;
以log4j為例,log4j建議使用的日誌資訊優先順序由高至低分別是error、warn、info、debug。日誌資訊可以輸出到控制檯、檔案或者圖形元件。使用FileAppender可以將日誌資訊輸到檔案中,檔案太大(日誌內容過多)時導致讀取不方便,可以使用DailyRollingFileAppender,將log資訊輸到按照日期分割槽的多個檔案中,即每天產生一個log檔案,每個log檔案只記錄當天的資訊。
log4j可以同時設定多個日誌輸出源,在log4j.properties配置檔案中可指定同時在控制檯和檔案中輸出日誌資訊。也可以將日誌資訊存放到資料庫中。
log4j.rootLogger=warn,myconsole,errinfo
#輸出到控制檯的日誌
log4j.appender.myconsole=org.apache.log4j.ConsoleAppender
log4j.appender.myconsole.layout=org.apache.log4j.PatternLayout
#log4j.appender.myconsole.Threshold=warn
log4j.appender.myconsole.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n
#輸出到檔案的異常日誌檔案
log4j.appender.errinfo=org.apache.log4j.FileAppender
log4j.appender.errinfo.File=D:/ERROR.LOG
log4j.appender.errinfo.Threshold =ERROR
log4j.appender.errinfo.layout=org.apache.log4j.PatternLayout
log4j.appender.errinfo.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n