【问题标题】:Merging two log4j.properties files合并两个 log4j.properties 文件
【发布时间】:2012-09-06 06:09:04
【问题描述】:

我有两个类和两个 log4j.properties 文件:每个类都有一个文件。一切正常。现在我想将两个属性文件合并为一个。但我仍然希望每个类都有自己的日志文件。我怎么做?我做了以下,但它不工作:类 Abc.java 记录正常,但 Xyz.java 不再记录到自己的文件。请注意,Xyz.java 获取动态日志文件名。

 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

【问题讨论】:

    标签: java properties log4j


    【解决方案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 重新加载其配置

    【讨论】:

      【解决方案2】:

      事实证明我的属性文件是正确的。我的文件系统出了点问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-28
        • 2012-06-20
        相关资源
        最近更新 更多