我在运行时在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
答案 0 :(得分:0)
我认为你应该手动完成:重命名旧文件,然后重置属性:
copyFile(new File("old file"), new File("new file"));
请参阅copyFile
此外,您可以避免系统属性,并且不要重新读取属性文件,请使用:
((FileAppender) LogManager.getRootLogger().getAppender("File")).setFile("new file");