您好,登錄后才能下訂單哦!
這篇文章主要介紹了log4j如何配置和使用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
log4j有三個主要的組件,分別是:
*Logger(記錄器):負(fù)責(zé)按照設(shè)定的優(yōu)先級過濾日志信息,然后轉(zhuǎn)發(fā)到存放器
*Appender(存放器):負(fù)責(zé)接收并處理記錄器轉(zhuǎn)發(fā)來的日志信息,通常的處理是輸出到屏幕或者存儲到磁盤文件*Layout(布局器):負(fù)責(zé)格式化日志信息
上述三者之間的關(guān)系:
一個Logger可以掛接多個Appender(日志信息同時轉(zhuǎn)發(fā)到多個設(shè)備)
一個Appender指定一個Layout進行格式化操作
一、定義配置文件log4j.properties
1.
log4j.記錄器名稱=[ 級別 ] , 存放器名稱1, 存放器名稱2, …
級別優(yōu)先級由高到低依次是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
log4j建議只使用四個級別,優(yōu)先級從高到低分別是:ERROR、WARN、INFO、DEBUG
只有優(yōu)先級高于或等于設(shè)定級別的日志信息被轉(zhuǎn)發(fā),例如,如果定義為INFO,那么在程序中級別為DEBUG的日志信息都不會輸出。
log4j.rootLogger是所有記錄器的父對象(原名rootCategory已廢棄),可用于設(shè)定所有記錄器的缺省優(yōu)先級
記錄器可以繼承,如:log4j.myLogger.childLogger=,file
記錄器按名字獲得,第一次訪問時自動創(chuàng)建(總是存在)
如果約定每個類都只向其同名記錄器輸出日志,則在配置文件中可以針對每一個特定類進行日志配置
2.
log4j.appender.存放器名稱=存放器類名
目前,log4j實現(xiàn)的存放器類有以下幾種:
org.apache.log4j.ConsoleAppender(控制臺)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產(chǎn)生一個新的文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
3.
log4j.appender.存放器名稱.layout=布局器類名
目前,log4j實現(xiàn)的布局器類有以下幾種:
org.apache.log4j.PatternLayout(log4j的標(biāo)準(zhǔn)布局器,可以靈活地指定布局模式)
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含級別和日志信息的簡單字符串)
org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時間、線程、類別等等信息)
4.
設(shè)定布局器選項(主要是設(shè)定轉(zhuǎn)換格式)
log4j.appender.存放器名稱.layout.選項名=值
通常采用log4j的標(biāo)準(zhǔn)布局器:
log4j.appender.存放器名稱.layout=org.apache.log4j.PatternLayout
log4j.appender.存放器名稱.layout.ConversionPattern=格式化參數(shù)
log4j采用類似C語言中printf函數(shù)的格式化參數(shù)格式化日志信息,參數(shù)如下:
%m 輸出代碼中指定的信息
%p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL
%r 輸出自布局器構(gòu)造到該時間點所經(jīng)過的毫秒數(shù)
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產(chǎn)生該日志事件的線程名
%n 輸出一個回車換行符,Windows平臺為“/r/n”,Unix平臺為“/n”
%d 輸出該時間點的日期或時間,默認(rèn)格式為ISO8601,也可以在其后指定格式。如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類
似:08 十二月 03 12:04:52,531
%l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。如:Testlog4.main(TestLog4.java:10)
%F 輸出文件名
%L 輸出行號
二、在代碼中調(diào)用log4j
1.將log4j的jar包(log4j-1.2.15.jar)導(dǎo)入到工程中。
2.寫配置文件log4j.properties,放在src目錄下,系統(tǒng)運行時自動拷貝到bin目錄下。
1.<span > 2. import org.apache.log4j.Logger; 3. ... 4.private static final Logger log = Logger.getLogger(類名.class ); 5. ... 6. log.debug( Object message ); 7. log.info( Object message ); 8. log.warn( Object message ); 9. log.error( Object message ); 10. 11.</span> import org.apache.log4j.Logger; ... private static final Logger log = Logger.getLogger(類名.class); ... log.debug( Object message ); log.info( Object message ); log.warn( Object message ); log.error( Object message );
三、log4j.properties的例子
1.< span style ="font-family: courier new,courier;" > 2.# Set root logger priority to INFO and its only appender to CONSOLE. 3.log4j.rootLogger =INFO , CONSOLE 4.log4j.rootLogger =INFO , CONSOLE, LOGFILE 5. 6.# Set the enterprise logger category to FATAL and its only appender to CONSOLE. 7.log4j.logger.org.apache.axis.enterprise =FATAL , CONSOLE 8. 9.# CONSOLE is set to be a ConsoleAppender using a PatternLayout. 10.log4j.appender.CONSOLE =org .apache.log4j.ConsoleAppender 11.log4j.appender.CONSOLE.Threshold =INFO 12.log4j.appender.CONSOLE.layout =org .apache.log4j.PatternLayout 13. 14.# Pattern to output the caller's file name and line number. 15.log4j.appender.CONSOLE.layout.ConversionPattern =%5p [%t] (%F:%L) - %m%n 16. 17.# LOGFILE is set to be a File appender using a PatternLayout. 18.log4j.appender.LOGFILE =org .apache.log4j.FileAppender 19.log4j.appender.LOGFILE.File =axis .log 20.log4j.appender.LOGFILE.Append =true 21.log4j.appender.LOGFILE.Threshold =INFO 22.log4j.appender.LOGFILE.layout =org .apache.log4j.PatternLayout 23.log4j.appender.LOGFILE.layout.ConversionPattern =%-4r [%t] %-5p %c %x - %m%n 24.</ span >
# Set root logger priority to INFO and its only appender to CONSOLE.
log4j.rootLogger=INFO, CONSOLE
log4j.rootLogger=INFO, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
四、常見故障
log4j:WARN Please initialize the log4j system properly.
解決辦法:
【eclipse環(huán)境】將文件log4j.properties拷貝到src目錄下,運行時會自動拷貝到bin目錄下。之前可能需要Refresh。
示例:
log4j.rootLogger=INFO, cons, MyAppender log4j.appender.syslog.encoding=UTF-8 log4j.appender.cons=org.apache.log4j.ConsoleAppender log4j.appender.cons.layout=org.apache.log4j.SimpleLayout #日志記錄器 log4j.appender.MyAppender=org.apache.log4j.RollingFileAppender log4j.appender.MyAppender.File=/system.log #log4j.appender.MyAppender.encoding=UTF-8 log4j.appender.MyAppender.MaxFileSize = 2048KB log4j.appender.MyAppender.MaxBackupIndex = 20 log4j.appender.MyAppender.layout=org.apache.log4j.PatternLayout #log4j.appender.MyAppender.layout.ConversionPattern=%d (%F:%L) %-5p --> %m%n log4j.appender.MyAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n #信息記錄器 log4j.additivity.MsgLogger = false log4j.logger.MsgLogger=INFO, MsgAppender log4j.appender.MsgAppender=org.apache.log4j.RollingFileAppender #log4j.appender.MsgAppender.encoding=UTF-8 log4j.appender.MsgAppender.File=/msg.log log4j.appender.MsgAppender.MaxFileSize = 2048KB log4j.appender.MsgAppender.MaxBackupIndex = 20 log4j.appender.MsgAppender.layout=org.apache.log4j.PatternLayout log4j.appender.MsgAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n #數(shù)值記錄器 log4j.additivity.CollectValueLogger = false log4j.logger.CollectValueLogger=INFO, CollectValueAppender log4j.appender.CollectValueAppender=org.apache.log4j.RollingFileAppender #log4j.appender.CollectValueAppender.encoding=UTF-8 log4j.appender.CollectValueAppender.File=/value.log log4j.appender.CollectValueAppender.MaxFileSize = 20480KB log4j.appender.CollectValueAppender.MaxBackupIndex = 20 log4j.appender.CollectValueAppender.layout=org.apache.log4j.PatternLayout log4j.appender.CollectValueAppender.layout.ConversionPattern=%m%n
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“l(fā)og4j如何配置和使用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。