2012-09-06 98 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

原来我的属性文件是正确的。我的文件系统有问题。