、ありがとうございます。元のログファイルの存在を定期的にチェックするスレッドを用意しました(例えば、1分ごとなど)。それがなくなれば、スレッドはappenderを再構成して、最初に定義されたファイルを作成して使用するようにします。 上記の操作には、以下の方法を使用します。
protected void checkLogFile(){
Enumeration<?> e = Logger.getRootLogger().getAllAppenders();
while (e.hasMoreElements()) {
Appender appender = (Appender) e.nextElement();
if (FileAppender.class.isInstance(appender)) {
FileAppender fa = (FileAppender) appender;
String fileName = fa.getFile();
File logFile = new File(fileName).getAbsoluteFile();
logger.debug("check logFile = " + logFile);
if (!logFile.exists()) {
logger.debug("logFile is not exist. create a new log file: " + fileName);
fa.setFile(fileName);
fa.activateOptions();
}
}
}
}
は、元のログ・ファイルは相対パスでのlog4jの設定で定義されていることに注意してください(例えば「../log/proc.log」)