Log4j.properties 詳解

#定義輸出級別和輸出平臺
log4j.rootLogger=INFO,stdout,fileout
#設定stdout輸出平臺
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#每天一個日誌文件
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=test.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#對不同的package定義不同的輸出級別
log4j.logger.com.daniel.test=DEBUG

分析:log4j.properies定義一般分3部分:
log4j.rootLogger(必須)、log4j.appender(必須)、log4j.logger(不必須)

1、log4j.rootLogger

這個配置是必須的,它的定義格式:

log4j.rootLogger = level  , appenderName, appenderName, …

lelve是定義的輸出級別,低於該級別的將不會輸出,主要級別有OFF、ALL、FATAL、ERROR、WARN、INFO、DEBUG或自定義級 別,其中OFF設定的話將不輸出任何信息,ALL設定的話將輸出所有信息;另外5個的級別 FATAL>ERROR>WARN>INFO>DEBUG,如果你的lenel設定爲INFO,那麼不能輸出DEBUG信息;

appenderName是指定日誌信息輸出到哪個地方,控制檯,文件等等,可同時指定多個輸出目的地。

2、log4j.appender

這個也是必須配置的,它是負責控制日誌記錄操作的輸出。它的定義格式如下:

log4j.appender.appenderName=someAppender(選擇一種輸出平臺)
[log4j.appender.appenderName.File=文件名](文件輸出定義路徑)
log4j.appender.appenderName.layout=輸出佈局
log4j.appender.appenderName.layout.ConversionPattern=輸出格式

log4j.appender.appenderName指定輸出appender,Log4J提供了一下幾種appender:

a),org.apache.log4j.ConsoleAppender(控制檯)
b),org.apache.log4j.FileAppender(文件)
c),org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件)
d),org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件,可通過 log4j.appender.R.MaxFileSize=100KB設置文件大小,還可通過 log4j.appender.R.MaxBackupIndex=1設置爲保存一個備份文件)。
e),org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)

log4j.appender.appenderName.layout指定日誌信息的格式(佈局)Layout,它負責格式化Appender的輸出。Log4j提供的layout有以下幾種:

org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)。

log4j.appender.appenderName.layout.ConversionPattern格式化日誌信息,Log4J採用類似C語言中的printf函數的打印格式格式化日誌信息,打印參數如下:

%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產生該日誌事件的線程名
%n 輸出一個回車換行符,Windows平臺爲“rn”,Unix平臺爲“n”
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:2012年06月24日 23:55:28,92
%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。

3,log4j.logger

這個不是必需的,如果不配置這個,則採用log4j.rootLogger的level級別。它主要是具體到package、Class級別的info,它的定義格式如下:

log4j.logger.packageName[.ClassName]=level[,appender]

它也可以輸出到指定的appender,也可以不指定輸出到默認appender。

4,log4j的使用

a)、從www.apache.org下載commongs-logging包;

b)、在你的class裏面定義protected final Log logger = LogFactory.getLog(this.getClass());
c)、在需要日誌輸出的地方logger.info(...),logger.error(...),logger.debug(...),....注 意,在使用時前最好做個判斷if (logger.isDebugEnabled()){logger.debug("...");}其他類似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章