1. 程式人生 > >log4j日誌輸出分級別或模組到不同檔案

log4j日誌輸出分級別或模組到不同檔案

一、 實現分模組,輸出到不同的日誌檔案,  以下是log4j.properties的實現  
    
  log4j.appender.file=org.apache.log4j.DailyRollingFileAppender   
  log4j.appender.file.file=src\\log\\all.log   
  log4j.appender.file.DatePattern='.'yyyy-MM-dd   
  log4j.appender.file.layout=org.apache.log4j.PatternLayout   
  log4j.appender.file.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}  method:%l%n%m%n   
  log4j.rootLogger=debug,file    
    
  log4j.appender.usermanagerfile=org.apache.log4j.DailyRollingFileAppender   
  log4j.appender.usermanagerfile.file=src\\log\\usermanager.log   
  log4j.appender.usermanagerfile.DatePattern='.'yyyy-MM-dd   
  log4j.appender.usermanagerfile.layout=org.apache.log4j.PatternLayout   
  log4j.appender.usermanagerfile.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n   
  log4j.logger.userManager   =   info,   usermanagerfile    
除錯方法:
public   static   void   main(String[]   args)throws   Exception   {   
      
    Log   logger   =   LogFactory.getLog("file");   
    Log   logger   =   LogFactory.getLog("usermanager");   
    
  }   

二、log4j日誌分級別輸出到不同檔案
配置檔案
#log4j.rootLogger=info,stdoutdebug,error 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 

log4j.logger.info=info 
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.info.layout=org.apache.log4j.PatternLayout 
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.info.datePattern='.'yyyy-MM-dd 
log4j.appender.info.Threshold = INFO 
log4j.appender.info.append=true 
log4j.appender.info.File=${catalina.home}/logs/log4j/info.log 

log4j.logger.debug=debug 
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.debug.layout=org.apache.log4j.PatternLayout 
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.debug.datePattern='.'yyyy-MM-dd 
log4j.appender.debug.Threshold = DEBUG 
log4j.appender.debug.append=true 
log4j.appender.debug.File=${catalina.home}/logs/log4j/debug.log 

log4j.logger.warn=warn 
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.warn.layout=org.apache.log4j.PatternLayout 
log4j.appender.warn.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.warn.datePattern='.'yyyy-MM-dd 
log4j.appender.warn.Threshold = DEBUG 
log4j.appender.warn.append=true 
log4j.appender.warn.File=${catalina.home}/logs/log4j/warn.log 

log4j.logger.error=error 
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.error.layout=org.apache.log4j.PatternLayout 
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.error.datePattern='.'yyyy-MM-dd 
log4j.appender.error.Threshold = ERROR 
log4j.appender.error.append=true 
log4j.appender.error.File=$${catalina.home}/logs/log4j/error.log 

ConversionPattern設定輸出格式的引數說明:

 %p: 輸出日誌資訊優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,

 %d: 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2011年08月30日 15:00:00,921

%r: 輸出自應用啟動到輸出該log資訊耗費的毫秒數

%c: 輸出日誌資訊所屬的類目,通常就是所在類的全名

%t: 輸出產生該日誌事件的執行緒名

%l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及在程式碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

%x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。

%%: 輸出一個”%”字元 %F: 輸出日誌訊息產生時所在的檔名稱 %L: 輸出程式碼中的行號 %m: 輸出程式碼中指定的訊息,產生的日誌具體資訊

%n: 輸出一個回車換行符,Windows平臺為”\r\n”,Unix平臺為”\n”輸出日誌資訊換行

可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如:

 1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,預設的情況下右對齊。

 2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,”-”號指定左對齊。

 3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格。

 4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊交遠銷出的字元截掉。

三、log4j日誌級別介紹

log4j把日誌分為ALL、TRACE&(跟蹤)、DEBUG(除錯)、INFO(資訊)、WARNING(警告)、ERROR(錯誤)、FITAL(致命)、OFF等幾個級別,級別依次升高。級別高的Level會遮蔽級別低的資訊。

注意:

在程式中使用Log4j之前,首先要將commons-logging.jar和logging-log4j-1.2.9.jar匯入到classpath中,並將log4j.properties放於src根目錄中。