2012-09-06 104 views
0

我有兩個類和兩個log4j.properties文件:每個類的文件。一切工作正常。現在我想將兩個屬性文件合併爲一個。但我仍然希望每個班級都有自己的日誌文件。我怎麼做?我做了以下,但它不工作:類Abc.java日誌很好,但Xyz.java不會再登錄到自己的文件。請注意,Xyz.java獲取動態日誌文件名。合併兩個log4j.properties文件

log4j.appender.CONSOLE=org.apache.  log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.  log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.rootLogger=INFO, CONSOLE 

log4j.appender.ABC_ERR_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.ABC_ERR_LOG.File=/opt/mysite/var/log/allhere.error.log 
log4j.appender.ABC_ERR_LOG.MaxFileSize=4MB 
log4j.appender.ABC_ERR_LOG.MaxBackupIndex=3 
log4j.appender.ABC_ERR_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.ABC_ERR_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 
log4j.appender.ABC_ERR_LOG.Threshold = WARN 

log4j.appender.ABC_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.ABC_LOG.File=/opt/mysite/var/log/allhere.log 
log4j.appender.ABC_LOG.MaxFileSize=8MB 
log4j.appender.ABC_LOG.MaxBackupIndex=3 
log4j.appender.ABC_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.ABC_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.appender.XYZ_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.XYZ_LOG.File=/opt/mysite/var/log/job-${logfilename}.log 
log4j.appender.XYZ_LOG.MaxFileSize=8MB 
log4j.appender.XYZ_LOG.MaxBackupIndex=3 
log4j.appender.XYZ_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.XYZ_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.logger.com.mysite=DEBUG, ABC_LOG, ABC_ERR_LOG, XYZ_LOG 

回答

1

你的兩個類是在同一個包中?

如果沒有,你可以有記錄:

log4j.logger.com.mysite.packageAbc=DEBUG, ABC_LOG, ABC_ERR_LOG 
log4j.logger.com.mysite.packageXyz=DEBUG, XYZ_LOG 

否則您可以設置動態日誌文件是這樣的:

public final void initParams(final String logFileName, 
     final Layout logLayout, final boolean origin, final Level level) { 
    FileAppender appender = 
     (FileAppender) logger.getParent().getAppender(DEFAULT_APPENDER_NAME); 

    if (appender != null && !logFileName.equalsIgnoreCase(appender.getFile())) { 
     appender.setFile(logFileName); 
     appender.setThreshold(level); 
     appender.setLayout(logLayout); 
     appender.activateOptions(); 
    } 
} 

的重要組成部分,是

appender.activateOptions(); 

所以該log4j重新加載其配置

+0

感謝您的回覆。 – user1467855

0

原來我的屬性文件是正確的。我的文件系統有問題。