java - 合并两个 log4j.properties 文件

标签 java properties log4j

我有两个类和两个 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

最佳答案

你的两个类在同一个包中?

如果没有,您可能需要记录:

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 重新加载其配置

关于java - 合并两个 log4j.properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293914/

相关文章:

java - 分形渲染器中的 HashSet 性能问题

java - 错误 StatusLogger Log4j2 找不到日志记录实现

python - 用同名的@property 覆盖基类属性

java - 通过 log4j 将 printStackTrace() 发送到文件而不捕获异常

java - Log4j创建动态文件

java - 如何使 Log4j 环境特定

java - Java高效实现互信息

java - 是否可以编写一个方法来接受不同抽象的通用参数?

Android:编辑项目属性 - 更改应用程序名称

Python:如何用常规属性替换属性?