springmvc 專案完整示例06 日誌–log4j 引數詳細解析 log4j如何配置
Log4j由三個重要的元件構成:
日誌資訊的優先順序
日誌資訊的輸出目的地
日誌資訊的輸出格式
日誌資訊的優先順序從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌資訊的重要程度;
日誌資訊的輸出目的地指定了日誌將列印到控制檯還是檔案中;
而輸出格式則控制了日誌資訊的顯 示內容。
Log4j支援兩種配置檔案格式
一種是XML格式的檔案,一種是Java特性檔案(鍵=值)。
下面我們介紹使用Java特性檔案做為配置檔案的方法:
1.配置根Logger,其語法為:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
比如我們的就是
log4j.rootLogger = DEBUG,stdout,D
appenderName就是一個名字哈,你可以定義你自己的,不是說就要這樣子的,不過要跟下面使用的時候對應上就好了
其中,level 是日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
Log4j建議只使用四個級別,優 先級從高到低分別是ERROR、WARN、INFO、DEBUG。
通過在這裡定義的級別,您可以控制到應用程式中相應級別的日誌資訊的開關。
比如在這裡定 義了INFO級別,則應用程式中所有DEBUG級別的日誌資訊將不被打印出來。
appenderName就是指日誌資訊輸出到哪個地方。您可以同時指定多個輸出目的地。
2.配置日誌資訊輸出目的地Appender,其語法為:
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.option = valueN
其中,Log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender(控制檯), org.apache.log4j.FileAppender(檔案), org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案), org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案), org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)
(1)ConsoleAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Target=System.err:預設值是System.out。
(2)FileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。
(3)DailyRollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定當前訊息輸出到logging.log4j檔案中。
DatePattern='.'yyyy-MM:每月滾動一次日誌檔案,即每月產生一個新的日誌檔案。當前月的日誌檔名為logging.log4j,前一個月的日誌檔名為logging.log4j.yyyy-MM。
另外,也可以指定按周、天、時、分等來滾動日誌檔案,對應的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每週
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天兩次
5)'.'yyyy-MM-dd-HH:每小時
6)'.'yyyy-MM-dd-HH-mm:每分鐘
(4)RollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。
MaxFileSize=100KB:字尾可以是KB, MB 或者GB。在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到logging.log4j.1檔案中。
MaxBackupIndex=2:指定可以產生的滾動檔案的最大數,例如,設為2則可以產生logging.log4j.1,logging.log4j.2兩個滾動檔案和一個logging.log4j檔案。
我們的
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
就是指定到控制檯的 =左邊的stdout就是我們定義的名字,後面就是型別嘛
說白了就是
log4j.appender.appenderName=appender的型別
這樣子就指定了輸入的目的地了
3.配置日誌資訊的格式(佈局),其語法為:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j.appender.appenderName.layout.option = valueN
其中,Log4j提供的layout有以e幾種:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局), org.apache.log4j.PatternLayout(可以靈活地指定佈局模式), org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串), org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)
(1)HTMLLayout選項:
LocationInfo=true:輸出java檔名稱和行號,預設值是false。
Title=My Logging: 預設值是Log4J Log Messages。
(2)PatternLayout選項:
ConversionPattern=%m%n:設定以怎樣的格式顯示訊息。
Log4J採用類似C語言中的printf函式的列印格式格式化日誌資訊,列印引數如下: %m 輸出程式碼中指定的訊息
%p 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL %r 輸出自應用啟動到輸出該log資訊耗費的毫秒數 %c 輸出所屬的類目,通常就是所在類的全名 %t 輸出產生該日誌事件的執行緒名 %n 輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n” %d 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 %l 輸出日誌事件的發生位置,包括類目名、發生的執行緒,以及在程式碼中的行數。舉例:Testlog4.main(TestLog4.java:10)
說到這個地方,來點總結性的
我們以我們的例子說
### 輸出到控制檯 ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
其實就相當於你定義了一個方式,這個方式你自己要有一個名字
他就是最開始
log4j.rootLogger = DEBUG,stdout,D 這個地方的 , 第一個逗號後面的這些個名字,他就是appenderName
你需要,指定他的輸出目的
也即是
log4j.appender.stdout = 目的地
然後是剩下的一些引數,配置一下
就這樣子而已
具體的引數,以及引數的值,查查文件,百度一下就出來了
再囉嗦一點幾個引數
比如說你想某種方式只是輸出某種級別,比如說你想只是把error輸出到檔案
那麼你可以指定
log4j.appender.D.Threshold = ERROR ## 只輸出ERROR級別以上的日誌!!!
這個Threshold 就控制了這個
#附:Log4j比較全面的配置
#Log4j配置檔案實現了輸出到控制檯、檔案、回滾檔案、傳送日誌郵件、輸出到資料庫日誌表、自定義標籤等全套功能。
log4j.rootLogger=DEBUG,console,dailyFile,im
log4j.additivity.org.apache=true
# 控制檯(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 日誌檔案(logFile)
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=D:/logs/log.log4j
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 回滾檔案(rollingFile)
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=DEBUG
log4j.appender.rollingFile.ImmediateFlush=true
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.File=D:/logs/log.log4j
log4j.appender.rollingFile.MaxFileSize=200KB
log4j.appender.rollingFile.MaxBackupIndex=50
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 定期回滾日誌檔案(dailyFile)
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
# 應用於socket
log4j.appender.socket=org.apache.log4j.RollingFileAppender
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.Port=5001
log4j.appender.socket.LocationInfo=true
# Set up for Log Factor 5
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
# 傳送日誌到指定郵件
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=FATAL
log4j.appender.mail.BufferSize=10
log4j.appender.mail.From = [email protected]
log4j.appender.mail.SMTPHost=mail.com
log4j.appender.mail.Subject=Log4J Message
log4j.appender.mail.To= [email protected]
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %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('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 自定義Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = [email protected]
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
spring原理 實踐解析-簡單的helloworld
springmvc整合mybatis完整專案示例
maven專案整合springmvc整合mybatis