Log4j是幫助開發人員進行日志輸出管理的API類庫。它最重要的特點就可以配置文件靈活的設置日志信息的優先級、日志信息的輸出目的地以及日志信息的輸出格式。Log4j除了可以記錄程序運行日志信息外還有一重要的功能就是用來顯示調試信息。很多程序員經常會使用System.out.println語句輸出某個變量值的方法進行調試。這樣會帶來一個非常麻煩的問題:一旦哪天程序員決定不要顯示這些System.out.println的東西了就只能一行行的把這些語句注釋掉。若哪天又需調試變量值,則只能再 一行行去掉這些注釋恢復System.out.println語句。使用log4j可以很好的處理類似情況:使用"DEBUG"等級輸出會類似System.out.println,開發后期不需要輸出調試時可以把等級根據需要調高,如調到"ERROR"等級,只有出錯錯誤時才輸出。
在apache網站:jakarta.apache.org/log4j可以免費下載到Log4j最新版本的軟件包。
使用步驟分為3步:
目錄結構如下:
1. 加入log4j的jar包。
2. 在項目根目錄下添加配置文件log4j.properties(可以修改第一行代碼來設置等級和格式)
#設置logger級別DEBUG、INFO、WRNING、ERROR和輸出格式A、B、C或D
log4j.rootLogger=DEBUG, A
#輸出到控制台
log4j.appender.A=org.apache.log4j.ConsoleAppender
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#輸出到E盤的log.log文件
log4j.appender.B=org.apache.log4j.FileAppender
log4j.appender.B.File=E:\\log.log
log4j.appender.B.layout=org.apache.log4j.SimpleLayout
#輸出到E盤的log.html文件
log4j.appender.C=org.apache.log4j.RollingFileAppender
log4j.appender.C.File=E:\\log.html
log4j.appender.C.MaxFileSize=1000KB
log4j.appender.C.MaxBackupIndex=10
log4j.appender.C.layout=org.apache.log4j.HTMLLayout
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=E:\\log.log
log4j.appender.D.layout=org.apache.log4j.TTCCLayout
3. 創建日志記錄器來使用
package testLog4j; import org.apache.log4j.Logger; public class Test { //獲取日志記錄器Logger,名字為本類類名 private static Logger log = Logger.getLogger(Test.class); public static void main(String[] args) { for(int i=0;i<10;i++){ log.debug("HellWord"); } } }
輸出結果如下:
Log4j由三個重要的組件構成:日志信息的優先級,日志信息的輸出目的地,日志信息的輸出格式。日志信息的優先級從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日志信息的重要程度,比如使用DEBUG,則會包括前面3個,也就是全部都包括,使用INFO,則不包括DEBUG;日志信息的輸出目的地指定了日志將打印到控制台還是文件中;而輸出格式則控制了日志信息的顯示內容。
1. 配置log輸出目的地:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)
2. log信息的格式:
org.apache.log4j.HTMLLayout(HTML表格形式)
org.apache.log4j.SimpleLayout(簡單格式的日志,只包括日志信息的級別和指定的信息字符串 ,如:DEBUG - Hello)
org.apache.log4j.TTCCLayout(日志的格式包括日志產生的時間、線程、類別等等信息)
org.apache.log4j.PatternLayout(靈活地自定義日志格式)
當使用org.apache.log4j.PatternLayout來自定義信息格式時,可以使用log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %p-%m%n 來格式化信息
%c 輸出所屬類的全名,可寫為 %c{Num} ,Num類名輸出的范圍 如:"com.sun.aaa.classB",%C{2}將使日志輸出輸出范圍為:aaa.classB
%d 輸出日志時間其格式為 可指定格式 如 %d{HH:mm:ss}等
%l 輸出日志事件發生位置,包括類目名、發生線程,在代碼中的行數
%n 換行符
%m 輸出代碼指定信息,如info(“message”),輸出message
%p 輸出日志的優先級,即 FATAL ,ERROR 等
%r 輸出從啟動到顯示該條日志信息所耗費的時間(毫秒數)
%t 輸出產生該日志事件的線程名
其他詳細可參考:http://www.codeceo.com/article/log4j-usage.html
http://blog.csdn.net/anlina_1984/article/details/5313023/