1.先看一看公司開發(fā)日志文件翅雏,只有只有配置文件描述,配置說明人芽,對(duì)于初學(xué)者請(qǐng)見諒望几,不過下面的介紹會(huì)說很清楚
log4j.rootLogger=DEBUG,CONSOLE,A
log4j.addivity.org.apache=false
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddHH\:mm\:ss}-%-4r[%t]%-5p%x-%m%n
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=gbk
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File=${catalina.home}/logs/sys_log/PurePro_
log4j.appender.A.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=[tea_sys]%d{yyyy-MM-ddHH\:mm\:ss}%5p%c{1}\:%L\:%m%n
log4j.appender.file.encoding=UTF-8
2. Log4j 簡(jiǎn)介
log4j ?是在web項(xiàng)目中,最常用日志管理組件 萤厅,他可以應(yīng)用多種語言當(dāng)中橄抹。他有三個(gè)基本的組件組成【loggers,Appenders,Layouts】.對(duì)于基本的開發(fā),我們只需要掌握如何使用就可以了惕味。如果想要了解更深入可以看看源碼楼誓。最新的官方地址:http://logging.apache.org/log4j/2.x/
Loggers 記錄器,指定日志級(jí)別及輸出的地方level[debug,info,warn,error]
Appenders輸出源的設(shè)定名挥,log4j 提供的appener 有如下幾種
#1)org.apache.log4j.ConsoleAppender(輸出到控制臺(tái))
#2)org.apache.log4j.FileAppender(輸出到文件)
#3)org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
#4)org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)
#5)org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
那么如何使用呢疟羹?有兩種方式
第一種:log4j.appender.appenderName =org.apache.log4j.ConsoleAppender
第二種:就是上文中我們使用的方式。log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
每個(gè)Appneder常用屬性有:
ConsoleAppender
Threshold=WARN:指定日志信息的最低輸出級(jí)別禀倔,默認(rèn)為DEBUG榄融。
ImmediateFlush=true:表示所有消息都會(huì)被立即輸出,設(shè)為false則不輸出蹋艺,默認(rèn)值是true剃袍。
Target=System.err:默認(rèn)值是System.out。
FileAppender
Threshold=WARN:指定日志信息的最低輸出級(jí)別捎谨,默認(rèn)為DEBUG民效。
ImmediateFlush=true:表示所有消息都會(huì)被立即輸出,設(shè)為false則不輸出涛救,默認(rèn)值是true畏邢。
Append=false:true表示消息增加到指定文件中,false則將消息覆蓋指定的文件內(nèi)容检吆,默認(rèn)值是true舒萎。
File=D:/logs/logging.log4j:指定消息輸出到logging.log4j文件中。
DailyRollingFileAppender
Threshold=WARN:指定日志信息的最低輸出級(jí)別蹭沛,默認(rèn)為DEBUG臂寝。
ImmediateFlush=true:表示所有消息都會(huì)被立即輸出,設(shè)為false則不輸出摊灭,默認(rèn)值是true咆贬。
Append=false:true表示消息增加到指定文件中,false則將消息覆蓋指定的文件內(nèi)容帚呼,默認(rèn)值是true掏缎。
File=D:/logs/logging.log4j:指定當(dāng)前消息輸出到logging.log4j文件中皱蹦。
DatePattern='.'yyyy-MM:每月滾動(dòng)一次日志文件,即每月產(chǎn)生一個(gè)新的日志文件眷蜈。當(dāng)前月的日志文件名為logging.log4j沪哺,前一個(gè)月的日志文件名為logging.log4j.yyyy-MM。
另外酌儒,也可以指定按周辜妓、天、時(shí)今豆、分等來滾動(dòng)日志文件嫌拣,對(duì)應(yīng)的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每周
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天兩次
5)'.'yyyy-MM-dd-HH:每小時(shí)
6)'.'yyyy-MM-dd-HH-mm:每分鐘
RollingFileAppender
Threshold=WARN:指定日志信息的最低輸出級(jí)別,默認(rèn)為DEBUG呆躲。
ImmediateFlush=true:表示所有消息都會(huì)被立即輸出异逐,設(shè)為false則不輸出,默認(rèn)值是true插掂。
Append=false:true表示消息增加到指定文件中灰瞻,false則將消息覆蓋指定的文件內(nèi)容,默認(rèn)值是true辅甥。
File=D:/logs/logging.log4j:指定消息輸出到logging.log4j文件中酝润。
MaxFileSize=100KB:后綴可以是KB, MB 或者GB。在日志文件到達(dá)該大小時(shí)璃弄,將會(huì)自動(dòng)滾動(dòng)要销,即將原來的內(nèi)容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以產(chǎn)生的滾動(dòng)文件的最大數(shù)夏块,例如疏咐,設(shè)為2則可以產(chǎn)生logging.log4j.1,logging.log4j.2兩個(gè)滾動(dòng)文件和一個(gè)logging.log4j文件脐供。
WriterAppender
Layouts 布局:指定日志信息的顯示格式浑塞,共有4中可選擇,只要兩種就夠用了政己。
HTMLLayout : 以html 格式布局
SimpleLayout :包含日志信息的級(jí)別和信息字符串
PatternLayout :可以靈活的指定布局模式
ConversionPattern=%m%n:設(shè)定以怎樣的格式顯示消息酌壕。
備注最后來個(gè)常用的格式化符號(hào)說明請(qǐng)參考:
%p:輸出日志信息的優(yōu)先級(jí),即DEBUG歇由,INFO卵牍,WARN,ERROR沦泌,F(xiàn)ATAL辽慕。
%d:輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601赦肃,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:輸出自應(yīng)用程序啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)他宛。
%t:輸出產(chǎn)生該日志事件的線程名船侧。
%l:輸出日志事件的發(fā)生位置,相當(dāng)于%c.%M(%F:%L)的組合厅各,包括類全名镜撩、方法、文件名以及在代碼中的行數(shù)队塘。例如:test.TestLog4j.main(TestLog4j.java:10)袁梗。
%c:輸出日志信息所屬的類目,通常就是所在類的全名憔古。
%M:輸出產(chǎn)生日志信息的方法名遮怜。
%F:輸出日志消息產(chǎn)生時(shí)所在的文件名稱。
%L::輸出代碼中的行號(hào)鸿市。
%m::輸出代碼中指定的具體日志信息锯梁。
%n:輸出一個(gè)回車換行符,Windows平臺(tái)為"rn"焰情,Unix平臺(tái)為"n"陌凳。
%x:輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中内舟。
%%:輸出一個(gè)"%"字符合敦。
另外,還可以在%與格式字符之間加上修飾符來控制其最小長(zhǎng)度验游、最大長(zhǎng)度充岛、和文本的對(duì)齊方式。如:
1) c:指定輸出category的名稱批狱,最小的長(zhǎng)度是20裸准,如果category的名稱長(zhǎng)度小于20的話,默認(rèn)的情況下右對(duì)齊赔硫。
2)%-20c:"-"號(hào)表示左對(duì)齊炒俱。
3)%.30c:指定輸出category的名稱,最大的長(zhǎng)度是30爪膊,如果category的名稱長(zhǎng)度大于30的話权悟,就會(huì)將左邊多出的字符截掉,但小于30的話也不會(huì)補(bǔ)空格推盛。
確定布局后峦阁,以什么樣的格式化輸出,用法如下:
log4j.appender.A.layout.ConversionPattern=[test_sys]%d{yyyy-MM-ddHH\:mm\:ss}%5p%c{1}\:%L\:%m%n
日志有5個(gè)級(jí)級(jí)別但是建議只使用4個(gè)級(jí)別 耘成,DEBUG < INFO < WARN < ERROR< FATAL榔昔,右邊級(jí)別比左邊的級(jí)別高一些驹闰,如果level 配置的是info ,那么所有debug 的信息
將都不會(huì)被打印出來。
log4j.rootLogger=[level],appenderName1,appenderName2
level 記錄器的級(jí)別撒会,
appendername:輸出源的名字嘹朗,他指定日志輸出到哪里,比如控制臺(tái)诵肛,日志文件屹培。
參考文章:
http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html