1. 程式人生 > >Java中日誌的處理

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配置檔案中可指定同時在控制檯和檔案中輸出日誌資訊。也可以將日誌資訊存放到資料庫中。

  1. log4j.rootLogger=warn,myconsole,errinfo

  2. #輸出到控制檯的日誌

  3. log4j.appender.myconsole=org.apache.log4j.ConsoleAppender

  4. log4j.appender.myconsole.layout=org.apache.log4j.PatternLayout

  5. #log4j.appender.myconsole.Threshold=warn

  6. log4j.appender.myconsole.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n

  7. #輸出到檔案的異常日誌檔案

  8. log4j.appender.errinfo=org.apache.log4j.FileAppender

  9. log4j.appender.errinfo.File=D:/ERROR.LOG

  10. log4j.appender.errinfo.Threshold =ERROR

  11. log4j.appender.errinfo.layout=org.apache.log4j.PatternLayout

  12. log4j.appender.errinfo.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n