一、配置文件詳解
首先講下日誌等級,等級從高到底分別是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。總共7個等級,
其中最常用的是ERROR、WARN、INFO、DEBUG。在配置文件中,我們可以根據需要設置日誌等級,當設置爲ERROR
等級時,可以打印出ERROR以下的日誌信息,當設置爲DEBUG等級時,會將DEBUG等級以及以下的等級的日誌打印出來。
常用的log4j配置如下:
#設置根Logger
log4j.rootLogger = debug,stdout,D,E
### 輸出信息到控制擡 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
### 輸出DEBUG 級別以上的日誌到=F://logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
### 輸出ERROR 級別以上的日誌到=F://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =F://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
二、配置講解
1、首先要配置根Logger:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
[ level ] :設置日誌等級;
appenderName:日誌輸出目的地,可以配置多個
2、log4j.appender.appenderName 配置名爲appenderName輸出端是那種類型,類型如下:
#org.apache.log4j.ConsoleAppender(控制檯)
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件),
#org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
#org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
3、當log4j.appender.appenderName 配置使用文件保存日誌信息時,可以使用log4j.appender.appenderName.File配置日誌文件保存路徑;
4、log4j.appender.appenderName.Append 日誌內容是否追加,默認是true。
5、log4j.appender.appenderName.Threshold 配置日誌等級,注意:這裏配置的日誌等級應該小於或者等於log4j.rootLogger配置的日誌等級,不然即使配置更高級也無效。
6、log4j.appender.appenderName.layout 配置日誌的打印方式,有以下幾種類型:
#org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
#org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
#org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
#org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息。
7、log4j.appender.appenderName.layout.ConversionPattern 設置打印日誌信息的具體格式,與log4j.appender.appenderName.layout=org.apache.log4j.PatternLayout配合使用,
比如:log4j.appender.appenderName.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
# %d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n 從右向左介紹
# %n 輸出一個回車換行符,Windows平臺爲"rn”,Unix平臺爲"n”,
# %m 輸出代碼中指定的消息,
# %l 輸出日誌事件的發生位置,及在代碼中的行數。
# %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
# %r 輸出自應用啓動到輸出該log信息耗費的毫秒數,
# %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2002-10-18 22:10:28,921。
8、如果想要配置生成一個配置文件,則可以參考下面配置:
log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRolling.File=${catalina.base}/logs/portal.log
log4j.appender.DailyRolling.DatePattern=yyyy-MM-dd'.log'
log4j.appender.DailyRolling.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyRolling.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
配置完成的當天, 會在Tomcat的logs目錄下,生成名爲portal.log的文件,比如今天是2019-04-11, 到明天這個文件將更名爲portal.log2019-04-11.log。
9、如果想要設置日誌文件的大小,則可以參考下面配置:
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/portal.log
log4j.appender.R.Encoding=GBK
log4j.appender.R.MaxFileSize=256KB
log4j.appender.R.Append=true
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] method:%l %m%n
將會在Tomcat的logs目錄下,生成portal.log文件,當文件大小超過256KB時,將原來的文件更名爲portal.log.1,再使用portal.log接收新的日誌記錄。
log4j.appender.R.MaxBackupIndex=10表示只保存10個備份文件。
二、代碼引入思路
1、加依賴包:導入包log4j-1.2.17.jar;
2、寫配置文件,參考上面配置;
3、在需要打印日誌的類中創建一個日誌對象,如:private static Logger logger = Logger.getLogger(Log4jDemo.class);
三、優缺點
優點:實現方式簡單、使用方便,通過配置文件可以靈活配置自己想要的日誌模型;
缺點:需要大量創建日誌對象,耗資源。