log4j.properties配置
日志輸出級別
- ERROR
- WARN
- INFO
- DEBUG
輸出位置
log4j.appender.appenderName = fully.qualified.name.of.appender.class
- org.apache.log4j.ConsoleAppender(控制臺)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
- org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方
輸出格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
- org.apache.log4j.HTMLLayout(以HTML表格形式布局),
- org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
- org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串)摔刁,
- org.apache.log4j.TTCCLayout(包含日志產生的時間、線程文兑、類別等等信息)
PatternLayout
- -X號: X信息輸出時左對齊换淆;
- %p: 輸出日志信息優(yōu)先級,即DEBUG朗鸠,INFO乱凿,WARN顽素,ERROR,FATAL,
- %d: 輸出日志時間點的日期或時間徒蟆,默認格式為ISO8601戈抄,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS}后专,輸出類似:2002年10月18日 22:10:28划鸽,921
- %r: 輸出自應用啟動到輸出該log信息耗費的毫秒數
- %c: 輸出日志信息所屬的類目,通常就是所在類的全名
- %t: 輸出產生該日志事件的線程名
- %l: 輸出日志事件的發(fā)生位置,相當于%C.%M(%F:%L)的組合,包括類目名裸诽、發(fā)生的線程嫂用,以及在代碼中的行數。舉例:Testlog4.main (TestLog4.java:10)
- %x: 輸出和當前線程相關聯的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應用中丈冬。
- %%: 輸出一個"%"字符
- %F: 輸出日志消息產生時所在的文件名稱
- %L: 輸出代碼中的行號
- %m: 輸出代碼中指定的消息,產生的日志具體信息
- %n: 輸出一個回車換行符嘱函,Windows平臺為"/r/n",Unix平臺為"/n"輸出日志信息換行
可以在%與模式字符之間加上修飾符來控制其最小寬度埂蕊、最大寬度往弓、和文本的對齊方式。
如:
- %20c:指定輸出category的名稱蓄氧,最小的寬度是20函似,如果category的名稱小于20的話,默認的情況下右對齊喉童。
- %-20c:指定輸出category的名稱撇寞,最小的寬度是20,如果category的名稱小于20的話堂氯,"-"號指定左對齊蔑担。
- %.30c:指定輸出category的名稱,最大的寬度是30咽白,如果category的名稱大于30的話啤握,就會將左邊多出的字符截掉,但小于30的話也不會有空格晶框。
- %20.30c:如果category的名稱小于20就補空格排抬,并且右對齊,如果其名稱長于30字符三妈,就從左邊較遠輸出的字符截掉。
使用問題總結
log打印兩遍問題
子Logger會繼承父Logger的輸出源莫绣,會導致某些情況下日志輸出兩次或者多次畴蒲。
log4j.rootLogger=info,Console
log4j.logger.childLogger=debug,Console
如果不想繼承輸出源,可以設置additivity,如下:
log4j.additivity.childLogger=false