как получить содержимое старого файла приложения-файла log4j в новом файле для того же приложения во время выполнения? - PullRequest
0 голосов
/ 06 февраля 2012

Я изменяю имя файла appender в log4j во время выполнения.

теперь я хочу, чтобы содержимое предыдущего файла было в новом файле для 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 голосов
/ 06 февраля 2012

Я думаю, вы должны сделать это вручную: переименовать старый файл и затем сбросить свойства:

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

См. copyFile

Также вы можете избежать системных свойств и не перечитывать файл свойств, используйте это:

((FileAppender) LogManager.getRootLogger().getAppender("File")).setFile("new file");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...