Расширение стандартного класса FileAppender оказалось неудачным для меня. Поэтому я нашел другое решение, использующее программные приложения для создания файлов журнала только по требованию (и с отметкой времени в файле имени). Я написал эти два метода:
public void startLog() {
SimpleDateFormat sdf_long = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
FileAppender fa = new FileAppender();
fa.setName("foo");
fa.setFile(sdf_long.format(new Date()) + ".log");
fa.setLayout(new PatternLayout("%d{HH:mm:ss.SSS} %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
Logger.getRootLogger().addAppender(fa);
}
public void stopLog() {
Logger.getRootLogger().getAppender("foo").close();
Logger.getRootLogger().removeAppender("foo");
}
Мой файл log4j.properties настраивает только консольный приложение. Когда я хочу начать регистрацию, я вызываю метод startLog (). Когда я хочу войти в другой файл, я сначала вызываю stopLog (), а затем метод startLog ().