1. 程式人生 > >log4j控制日誌輸出檔名稱的兩種方式

log4j控制日誌輸出檔名稱的兩種方式

1. 第一種方式

在類物件中用如下方式定義logger變數

private static Logger logger = Logger.getLogger("lemmaXml");
這樣通過名稱的方式獲取logger,需要在log4j.properties檔案中定義一個名稱為lemmaXml的appender,配置如下:
log4j.logger.lemmaXml=INFO,lemmaXml
log4j.appender.lemmaXml=org.apache.log4j.DailyRollingFileAppender
log4j.appender.lemmaXml.Threshold=DEBUG
log4j.appender.lemmaXml.File=${catalina.home}/logs/lemmaXml.log
log4j.appender.lemmaXml.layout=org.apache.log4j.PatternLayout
log4j.appender.lemmaXml.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss} %m %n

上述配置說明,名稱為lemmaXml的appender,是每天形成一個日誌檔案,日誌檔案的名稱為
${catalina.home}/logs/lemmaXml.log

日誌的格式為

%5p %d{yyyy-MM-dd HH:mm:ss} %m %n

2. 第二種方式(這種方式親測正確)

在類物件中用如下方式定義logger變數

import org.apache.log4j.Logger;
private static Logger logger = Logger.getLogger(ExportLemmaManagerService.class);

即,通過類的引數來獲取logger變數,此時必然也需要在log4j.properties檔案有關於該物件日誌檔案的輸出配置,當然這裡的配置不是針對每個類專門配置,而是針對一個路徑整體配置,即,你可以配置某個目錄下的所有類方式的輸出檔案的檔名稱,如下
log4j.rootLogger=info,stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n


log4j.logger.com.soso.baike.service=DEBUG,ServiceLog
log4j.appender.ServiceLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServiceLog.Threshold=DEBUG
log4j.appender.ServiceLog.File=${catalina.home}/logs/service.log
log4j.appender.ServiceLog.MaxBackupIndex=10
log4j.appender.ServiceLog.layout=org.apache.log4j.PatternLayout
log4j.appender.ServiceLog.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n


上述配置了目錄com.soso.baike.service下的輸出檔案方式,上述ExportLemmaManagerService類就是在該包下,所以用該包下的類方式來定義logger的話,輸出的檔案就都在service.log檔案中,每天生成一個新的日誌檔案。