log4j配置檔案配置及解讀
說明:以下開發工具使用的是idea
一:開啟idea,建立一個Maven管理的web專案
1. File->New->Module
2.Maven->勾選Create from archetype->選中maven-archetype-webapp
3.填入GroupId 和ArtifactId (這兒的內容隨意),然後一路點預設的Next
4.建立好的專案結構如下圖所示
二:匯入相關的jar,為了簡潔我們只引用了兩個jar
<!--單元測試相關jar--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <!--log4j相關jar--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency>
三:新增log4j的配置檔案
在src->main下新建resources資料夾,並在resources上右鍵,找到Mark Directory as 選中Resources Root,然後新建log4j.properties配置檔案,"log4j.properties"這個名字不要改動,否則會報錯,無需在web.xml裡做任何配置
四:配置檔案解讀
log4j.rootLogger=DEBUG,console,file #----------------輸出為控制檯-------------------# log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.Threshold=DEBUG log4j.appender.console.ImmediateFlush=true log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n #----------------輸出為檔案-------------------# log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=log/log.txt log4j.appender.file.MaxFileSize=10mb log4j.appender.file.Threshold=ERROR log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
1.配置檔案中 log4j.rootLogger=debug,console,file,AAA,BBB,CCC,...
其中第一個單詞為日誌的輸出級別(輸出級別共有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL),
後面的console,file,AAA,BBB,CCC,...為輸出端,輸出端可以自定義,以","做分割
2.常用的輸出端有控制檯(ConsoleAppender)、檔案(FileAppender、DailyRollingFileAppender、RollingFileAppender)、資料庫(JDBCAppender )
3.現在以輸出到控制檯、檔案、資料庫為例進行說明
- 輸出到控制檯console
log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.Threshold=DEBUG log4j.appender.console.ImmediateFlush=true log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n
log4j.appender.console.Target 的選項有System.error、System.out,常用後者;
log4j.appender.console.Threshold 輸入級別有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,需要說明的是這兒的輸出級別儘量要大於等於log4j.rootLogger 後面填寫的級別,否則不會有相應的輸出;
log4j.appender.console.ImmediateFlush 預設為true,可以不加這一行;
log4j.appender.console.layout 可渲染的輸出型別
log4j.appender.console.layout.ConversionPattern 輸出樣式 [%p][%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n
%m 輸出程式碼中指定的訊息 %p 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL %r 輸出自應用啟動到輸出該log資訊耗費的毫秒數 %c 輸出所屬的類目,通常就是所在類的全名 %t 輸出產生該日誌事件的執行緒名 %n 輸出一個回車換行符,Windows平臺為"rn”,Unix平臺為"n” %d 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyyy MM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 %l 輸出日誌事件的發生位置,包括類目名、發生的執行緒,以及在程式碼中的行數。 %x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。 %%: 輸出一個”%”字元 %F: 輸出日誌訊息產生時所在的檔名稱 %M: 輸出執行方法 %L: 輸出程式碼中的行號
- 輸出到檔案簡潔配置
log4j.appender.file =org.apache.log4j.FileAppender log4j.appender.file.File=logs/doctorLog.txt log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%c]-%m%n
其中log4j.appender.file 常用的有
org.apache.log4j.FileAppender(檔案)
org.apache.log4j.DailyRollingFileAppender(每天都產生一個日誌檔案)
org.apache.log4j.RollingFileAppender(檔案大小達到指定尺寸時產生一個新的日誌檔案,檔名稱上會自動新增數字序號。)
log4j.appender.file.File 指定的是檔案的輸出路徑,上面的寫法是相對專案的路徑,也可以配置成絕對路徑 例如D:/log。txt,推薦使用相對路徑;
- 輸出到資料庫的配置(以MySQL為例)
log4j.appender.jdbc=com.MyJDBCAppender log4j.appender.jdbc.driver=com.mysql.jdbc.Driver log4j.appender.jdbc.URL=jdbc:mysql://localhost:3306/mydatabase log4j.appender.jdbc.user=root log4j.appender.jdbc.password=123456 log4j.appender.jdbc.sql=insert into log (LogName,UserName,Class,Mothod,createTime,LogLevel,MSG,userIp) values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH\:mm\:ss}','%p','%m','%X{userIp}') log4j.appender.CMM.layout=org.apache.log4j.PatternLayout
log4j.appender.jdbc = com.MyJDBCAppender需要自己配置