JavaWeb項目異常管理之log4j的使用教程


 轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6399191.html

在項目中的應用見: https://github.com/ygj0930/CoupleSpace

    在我們的項目運行過程中,偶爾會有預料不到的異常發生。如果能在發生異常時把異常的詳細情況,比如什么時候在哪一行代碼發生了什么異常,嚴重級別是多少之類的信息記錄下來,那么我們就可以在維護時根據這個記錄異常的文件針對性地去修復這些異常了。log4j為我們解決了這個問題。

    log4j是apache提供給我們的一個處理異常的插件,利用它,我們可以在某些可能出現運行錯誤的地方用代碼做好處理異常的准備。比如:把異常信息在控制台打印出來並把異常以某種易解讀的格式保存在一個運行日志文件里。下面,我們來看一下log4j的具體用法。

    一:下載log4j插件的jar包

    下載地址:http://logging.apache.org/log4j/1.2/download.html 

     解壓后,得到log4j和commons-logging兩個jar包,並把上面兩個jar包添加到項目里。

    二:定制配置信息。

    log4j是通過logger對象來處理異常信息的,而關於logger對象的一系列定義卻是通過配置文件來實現的。

    我們在src目錄下新建一個properties文件,如:log4j.properties

    然后,我們在該配置文件里進行logger對象的定義。主要有兩部分:

    1:配置根logger對象

log4j.rootLogger = 【級別】,appender1,appender2,appender3......

    級別主要有4個,分別為:ERROR>WARN>INFO>DEBUG。這里的級別決定了程序運行時出現的錯誤會不會被這里定義的appender處理,只有當出現的錯誤等級大於等於appender的級別時才會被打印以及寫入日志文件。

   rootLogger可以配置多個appender,每個appender負責把異常記錄作不同處理,比如:appender1把異常記錄打印到控制台,appender2把記錄寫入日志文件...

    2:對每個appender對象進行進一步的配置

log4j.appender.appenderName = 具體是哪種appender 
//配置appender的具體信息,比如:異常輸出到哪個文件、異常信息的保存格式...
log4j.appender.appenderName.option1 = value1  
…  
log4j.appender.appenderName.option = valueN

    Log4j提供的appender有以下幾種:

   org.apache.log4j.ConsoleAppender(輸出到控制台),

   org.apache.log4j.FileAppender(輸出到文件),

   org.apache.log4j.DailyRollingFileAppender(輸出到每天產生的一個日志文件),

   org.apache.log4j.RollingFileAppender(輸出到文件大小到達指定尺寸的時候產生一個新的文件的日志文件),

   org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)

   每個appender主要需要配置的option有好很多,比如:layout、file、MaxFileSize、Append等,具體那些選項要配置因appender對象的種類而定。

   比如,DailyRollingFileAppender需要配置DatePattern項來指定生成日志文件的頻率:

  

 

   log4j提供了幾種異常信息的格式,主要有:

   org.apache.log4j.HTMLLayout(以HTML表格形式布局)

   org.apache.log4j.PatternLayout(可以靈活地指定布局模式)

   org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串)

   org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)

   其中,常用的是PatternLayout,我們可以靈活地指定異常信息的打印、保存格式。打印參數如下:

 

%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL  
%r 輸出自應用啟動到輸出該log信息耗費的毫秒數  
%c 輸出所屬的類目,通常就是所在類的全名  
%t 輸出產生該日志事件的線程名  
%n 輸出一個回車換行符,Windows平台為“rn”,Unix平台為“n”  
%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 %l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

例如:log4j.appender.appender1.layout.PatternLayout=d%-m%n% ,則異常打印的格式為 時間-異常信息文字+換行

三:在項目中通過logger對象處理異常
1:創建Logger對象
Logger logger=Logger.getLogger(getClass().getName());

   2:在可能出現異常的地方通過以下方法打印、輸出日志記錄到文件

logger.debug ("message")/ logger.debug ("message",exception)
logger.info ("message")/ logger.info ("message",exception)
logger.warn ("message")/ logger.warn ("message",exception)
logger.error ("message")/ logger.error ("message",exception)

   各個appender會根據自身的級別與上面語句插入的記錄的級別比較,小於等於時就會處理該記錄,輸出到控制台或到日志文件。

   四:查看日志

   在項目運行的web服務器的bin目錄下找到配置appender時  log4j.appender.File=fileName  項的fileName文件,即為項目運行時的被寫入的異常記錄。

 



 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM