log4j控制日誌輸出檔名稱的兩種方式
阿新 • • 發佈:2019-01-24
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檔案中,每天生成一個新的日誌檔案。