1. 程式人生 > >Log4j配置記錄

Log4j配置記錄

key 目的 apach window 調試 lin 功能 表格形式 all

log4j的配置文件就是用來設置記錄器的級別存放器布局的,它可接key=value格式的設置或xml格式的設置信息。通過配置,可以創建出Log4J的運行環境。

1、配置文件

log4j配置文件的基本格式如下:

 1 #配置根Logger:[輸出級別],appender附加器1,appender附加器2...(附加器自己命名)
 2 #日誌輸出級別由低到高: DEBUG < INFO < WARN < ERROR < FATAL
 3 log4j.rootLogger = [level],appenderName1,appenderName2...
 4 
 5 #配置日誌信息輸出目的地Appender
6 log4j.appender.appenderName = appender類的完全限定名 7 log4j.appender.appenderName.option1 = value1 8 log4j.appender.appenderName.optionN = valueN 9 10 #配置日誌信息的格式 11 log4j.appender.appenderName.layout = layout類的完全限定名 12 log4j.appender.appenderName.layout.option1 = value1 13 log4j.appender.appenderName.layout.optionN = valueN

如下配置例子:運行項目會在ConsoleAppender(即控制臺)輸出ConversionPattern格式信息,並在:eclipse目錄下/logs/springmvcMybist/ssm.log輸出日誌內容

1 #定義LOG輸出級別
 2 log4j.rootLogger=INFO,Console,File
 3 #定義日誌輸出目的地為控制臺
 4 log4j.appender.Console=org.apache.log4j.ConsoleAppender
 5 log4j.appender.Console.Target=System.out
 6 #可以靈活地指定日誌輸出格式,下面一行是指定具體的格式
 7 log4j.appender.Console.layout = org.apache.log4j.PatternLayout
 8 log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
 9 
10 #文件大小到達指定尺寸的時候產生一個新的文件
11 log4j.appender.File = org.apache.log4j.RollingFileAppender
12 #指定輸出目錄

13 log4j.appender.File.File = logs/springmvcMybist/ssm.log
14 #定義文件最大大小
15 log4j.appender.File.MaxFileSize = 10MB
16 #輸出所以日誌,如果換成DEBUG表示輸出DEBUG以上級別日誌
17 log4j.appender.File.Threshold = ALL
18 log4j.appender.File.layout = org.apache.log4j.PatternLayout
19 log4j.appender.File.layout.ConversionPattern =[%p] %d [%c]-%m%n

Appender :日誌輸出目的地,Log4j提供的appender有以下幾種:(appender類完全限定名

1 org.apache.log4j.ConsoleAppender(控制臺),2 org.apache.log4j.FileAppender(文件),
3 org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件),
4 org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
5 org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)

Layout:日誌輸出格式,Log4j提供的layout有以下幾種:(layout類的完全限定名

1 org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2 org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
3 org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
4 org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)

打印參數: Log4J采用類似C語言中的printf函數的打印格式格式化日誌信息,如下:

1   %m   輸出代碼中指定的消息
2   %p   輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL 
3   %r   輸出自應用啟動到輸出該log信息耗費的毫秒數 
4   %c   輸出所屬的類目,通常就是所在類的全名 
5   %t   輸出產生該日誌事件的線程名 
6   %n   輸出一個回車換行符,Windows平臺為“/r/n”,Unix平臺為“/n” 
7   %d   輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss ,SSS},輸出類似:2002年10月18日  22 : 10 : 28 , 921  
8   %l   輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java: 10)

3. 為不同的 Appender 設置日誌輸出級別:
當調試系統時,我們往往註意的只是異常級別的日誌輸出,但是通常所有級別的輸出都是放在一個文件裏的,如果日誌輸出的級別是DEBUG!?工作量就大了,debug是最低級別,輸出全部。
這時我們也許會想要是能把異常信息單獨輸出到一個文件裏該多好啊。當然可以,Log4j已經提供了這樣的功能,我們只需要在配置中修改AppenderThreshold 就能實現,比如下面的例子:

 1  1 #1、配置根Logger:[輸出級別],附加器1,附加器2...
 2  2 log4j.rootLogger=DEBUG,CONSOLE,D,E
 3  3 
 4  4 #2、配置日誌信息輸出目的地Appender
 5  5 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 6  6 log4j.appender.CONSOLE.Target=System.out
 7  7 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 8  8 log4j.appender.CONSOLE.layout.ConversionPattern=[SSM] %d [%t] %-5p %-50.50c-%m%n
 9  9 
10 10 #輸出到日誌文件
11 11 #DailyRollingFileAppender每天產生一個日誌文件
12 12 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
13 13 log4j.appender.D.File = logs/springmvcMybaties/ssm.log
14 14 log4j.appender.D.Append = true
15 15 #輸出DEBUG級別以上的日誌
16 16 log4j.appender.D.Threshold = DEBUG 
17 17 log4j.appender.D.layout = org.apache.log4j.PatternLayout
18 18 log4j.appender.D.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}] [%c] [ %t:%r ] %m%n
19 19 
20 20 #保存異常信息到單獨文件
21 21 log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
22 22 #異常日誌文件名:eclipse根目錄\logs
23 23 log4j.appender.E.File = logs/springmvcMybaties/ssm-error.log
24 24 log4j.appender.E.Append = true
25 25 #只輸出ERROR級別以上的日誌
26 26 log4j.appender.E.Threshold = ERROR 
27 27 log4j.appender.E.layout = org.apache.log4j.PatternLayout
28 28 log4j.appender.E.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}] [%c] [ %t:%r ] %m%n

日誌的輸出路徑可以放絕對路徑

另外log4j還可以配置發郵件功能(沒試過)可以參考https://www.cnblogs.com/learnspace/p/6850129.html

Log4j配置記錄