日志系統(tǒng)
log4j配置文件詳解
Log4j簡介
Loggers(記錄器)体捏,Appenders (輸出源)和Layouts(布局)
- loggers
日志級別:DEBUG毒返、INFO重归、WARN窟赏、ERROR和FATAL
- appenders
日志輸出: 控制臺(Console)枫弟、文件(Files)
常使用的類如下:
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ā)送到任意指定的地方)
- layouts
日志格式化輸出
常使用的類如下:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以靈活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時間究反、線程慈参、類別等信息)
- 配置詳解
控制臺(console,常用)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
日志文件(logFile)
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=D:/logs/log.log4j
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
回滾文件(rollingFile)
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=DEBUG
log4j.appender.rollingFile.ImmediateFlush=true
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.File=D:/logs/log.log4j
log4j.appender.rollingFile.MaxFileSize=200KB
log4j.appender.rollingFile.MaxBackupIndex=50
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
定期回滾日志文件(dailyFile推沸,常用)
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.Threshold=DEBUG
log4j.appender.dailyFile.ImmediateFlush=true
log4j.appender.dailyFile.Append=true
log4j.appender.dailyFile.File=D:/logs/log.log4j
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
發(fā)送日志到指定郵件
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=FATAL
log4j.appender.mail.BufferSize=10
log4j.appender.mail.From = xxx@mail.com
log4j.appender.mail.SMTPHost=mail.com
log4j.appender.mail.Subject=Log4J Message
log4j.appender.mail.To= xxx@mail.com
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
應(yīng)用于數(shù)據(jù)庫
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=
log4j.appender.database.sql=INSERT INTO LOG4J (Message) VALUES('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
自定義Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
附錄
- ConversionPattern配置:
示例:log4j.appender.file.layout.ConversionPattern=[%-4r %-5p %d{yyyy/MM/dd HH\:mm\:ss\:SSS}][%C] %m%n
設(shè)定以怎樣的格式顯示消息:
%p:輸出日志信息的優(yōu)先級输枯,即DEBUG议泵,INFO,WARN桃熄,ERROR先口,F(xiàn)ATAL。
%d:輸出日志時間點的日期或時間瞳收,默認格式為ISO8601碉京,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}螟深。
%r:輸出自應(yīng)用程序啟動到輸出該log信息耗費的毫秒數(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)生時所在的文件名稱。
%L::輸出代碼中的行號钻洒。
%m::輸出代碼中指定的具體日志信息奋姿。
%n:輸出一個回車換行符,Windows平臺為"rn"素标,Unix平臺為"n"称诗。
%x:輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中头遭。
%%:輸出一個"%"字符寓免。
另外,還可以在%與格式字符之間加上修飾符來控制其最小長度计维、最大長度袜香、和文本的對齊方式。如:
- c:指定輸出category的名稱鲫惶,最小的長度是20蜈首,如果category的名稱長度小于20的話,默認的情況下右對齊欠母。
2)%-20c:"-"號表示左對齊欢策。
3)%.30c:指定輸出category的名稱,最大的長度是30艺蝴,如果category的名稱長度大于30的話猬腰,就會將左邊多出的字符截掉,但小于30的話也不會補空格猜敢。
- DatePattern說明
示例:log4j.appender.file.DatePattern='.'yyyy-MM-dd
DatePattern='.'yyyy-MM:每月滾動一次日志文件姑荷,即每月產(chǎn)生一個新的日志文件。當(dāng)前月的日志文件名為logging.log4j缩擂,前一個月的日志文件名為logging.log4j.yyyy-MM鼠冕。
另外,也可以指定按周胯盯、天懈费、時、分等來滾動日志文件博脑,對應(yīng)的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每周
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天兩次
5)'.'yyyy-MM-dd-HH:每小時
6)'.'yyyy-MM-dd-HH-mm:每分鐘
- 重要說明:
1)憎乙、根logger和子logger的關(guān)系:子logger會輸出其父logger的appernder直到遇到log4j.additivity.org.apache=false
2)、顯示設(shè)置的日志級別是優(yōu)先級最高的級別
3)叉趣、按照類劃分日志
private static Log logger = LogFactory.getLog(Test.class);
log4j.logger.cn.com.Test= DEBUG, test
可以按照類進行對日志區(qū)分
4)按照appender劃分日志
private static Log logger1 = LogFactory.getLog("myTest1");
log4j.logger.myTest1= DEBUG, test1