使用RollingFileAppender,maxsize,maxbackupindex并关闭

时间:2016-04-29 08:45:43

标签: java logging log4j apache-camel

我使用RollingFileAppender和logger类将日志打印到文件中,我没有单独的配置文件。

public void logBIHAuditMessage(String message, Level level, String Location) {

    try {
        RollingFileAppender fileAppender = new RollingFileAppender(new PatternLayout(
                "%d{DATE} %p %M %m %n"), "C:\\Logfiles\\Audit.log", true);

        fileAppender.setMaxFileSize("5MB");
        fileAppender.setMaxBackupIndex(5);
        fileAppender.activateOptions();
        LOG.addAppender(fileAppender);
        LOG.info(message);
        fileAppender.close();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

在Apache camel应用程序中从多个位置调用logBIHAuditMessage

由于使用了fileAppender.close();

,我收到了以下错误
  

10:36:39,715 ERROR [stderr](Camel(camel-9)thread#20 - JmsConsumer [BIH_A1_Req_INHQ])log4j:ERROR尝试附加到名为[null]的已关闭的appender。

如果我不关闭文件追加器,则会多次打印相同的日志。

如果我不使用synchronized关键字也会多次打印一些日志,请告诉我可能是什么问题?

1 个答案:

答案 0 :(得分:0)

Log4J中有两个log4j.properties

您在类路径中保留一个并且其他正在加载的可以使用PropertyConfigurator.configure(..)).以编程方式删除。

或者,您可以通过以下代码覆盖它。

BasicConfigurator.resetConfiguration();
PropertyConfigurator.configure(props);