log4j.properties文件
log4j.rootLogger=INFO, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
#log4j.appender.stdout.Threshold=WARN
# Output to the File
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/app.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
log4j.appender.file.maxFileSize=1MB
log4j.appender.file.maxBackupIndex=10
配置文件說明
Log4J配置文件的基本格式如下
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
level 是日誌記錄的優先級,分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優 先級從高到低分別是ERROR、WARN、INFO、DEBUG。
log4j.appender.stdout.Threshold決定了最低接收級別,對當前的輸出級別的修改,直接覆蓋rootLogger
#配置日誌信息輸出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
#配置日誌信息的格式(佈局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
Appender 爲日誌輸出目的地,Log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender #控制檯
org.apache.log4j.FileAppender #文件
org.apache.log4j.DailyRollingFileAppender #每天產生一個日誌文件
org.apache.log4j.RollingFileAppender #文件大小到達指定尺寸的時候產生一個新的文件
org.apache.log4j.WriterAppender #將日誌信息以流格式發送到任意指定的地方
org.apache.log4j.net.SMTPAppender #郵箱
org.apache.log4j.jdbc.JDBCAppender #數據庫
Layout:日誌輸出格式,Log4j提供的layout有以下幾種:
org.apache.log4j.HTMLLayout #以HTML表格形式佈局
org.apache.log4j.PatternLayout #可以靈活地指定佈局模式
org.apache.log4j.SimpleLayout #包含日誌信息的級別和信息字符串
org.apache.log4j.TTCCLayout #包含日誌產生的時間、線程、類別等等信息
打印參數: Log4J採用類似C語言中的printf函數的打印格式格式化日誌信息,如下:
%c logger名字空間的全稱,如果加上{<層數>}表示列出從最內層算起的指定層數的名字空間。
%C 調用logger的類的全名(包含包路徑)。如[%C.%M()],輸出:com.crontab.main.SolrNewsToken.run()
%d 日誌記錄時間,{<日期格式>}使用ISO8601定義的日期格式。比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2016-12-12 11:13:45,921
%F 調用logger的源文件名。
%l 日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
%L 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java: 10 )
%m 輸出消息。
%M 調用logger的方法名。
%n 當前平臺下的換行符。Windows平臺爲“\r\n”,Unix平臺爲“\n”
%p 該條日誌的優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 從程序啓動時到記錄該條日誌時已經經過的毫秒數。
%t 產生該日誌事件的線程名。如[Thread: main]
%x 按NDC(Nested Diagnostic Context,線程堆棧)順序輸出日誌。
%X 按MDC(Mapped Diagnostic Context,線程映射表)輸出日誌。通常用於多個客戶端連接同一臺服務器,方便服務器區分是那個客戶端訪問留下來的日誌。
%% 顯示一個百分號。
Log4J配置文件參考
log4j.rootLogger=DEBUG,CONSOLE,FILE
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
# 控制檯日誌
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 文件日誌
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 滾動日誌
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 按日記錄日誌
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
# 郵件日誌
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
[email protected]
log4j.appender.MAIL.SMTPHost=mail.xxxx.com
log4j.appender.MAIL.Subject=Log4J Message
[email protected]
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 保存到數據庫
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 ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
參考
http://www.iteye.com/topic/378077