log4j使用總結

一、配置文件詳解

       首先講下日誌等級,等級從高到底分別是: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);

 

三、優缺點

優點:實現方式簡單、使用方便,通過配置文件可以靈活配置自己想要的日誌模型;

缺點:需要大量創建日誌對象,耗資源。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章