1. 程式人生 > >log4j配置檔案配置及解讀

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需要自己配置