如何在运行时为同一个appender获取一个log4j文件appender的旧文件内容?

时间:2012-02-06 17:17:26

标签: java log4j

我在运行时在log4j中更改了文件appender文件名。

现在我希望以前文件的内容位于appender的新文件中。

有人能告诉我怎么做吗?

最初我将log4j.properties作为:

#log4j.appender.H.File='/home/g/connector/logs/'Y'_H.log'
#log4j.appender.H.File=/home/g/connector/logs/H.log
log4j.appender.H.File=/home/g/${logNameSuffix}.log

在我的计划中,我最初做的是:

    Date date = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd.HH:mm:ss");
    formattedDate = "jam" + formatter.format(date) + "_" + port;
    System.setProperty("logNameSuffix", formattedDate);
    PropertyConfigurator.configure(otherArgs[1]);

然后重新加载为:

    String logName = formattedDate;

    System.clearProperty("logNameSuffix");
    System.setProperty("logNameSuffix", logName);

    LogManager.resetConfiguration();

我想要的是创建的新日志也应该包含旧的日志内容。

是否可以使用log4j?

谢谢, JJ

1 个答案:

答案 0 :(得分:0)

我认为你应该手动完成:重命名旧文件,然后重置属性:

copyFile(new File("old file"), new File("new file"));

请参阅copyFile

此外,您可以避免系统属性,并且不要重新读取属性文件,请使用:

((FileAppender) LogManager.getRootLogger().getAppender("File")).setFile("new file");