У меня есть приложение, которое использует log4j для входа в текстовый файл, я поместил файл log4j.properties в свой исполняемый jar-файл, содержащий параметры конфигурации журнала по умолчанию.
Мой файл log4j.properties выглядит следующим образом:
log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=mylogfile.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n
Мое приложение также имеет параметр командной строки, который позволяет пользователю изменять имя файла журнала, поэтому у меня есть функция, подобная следующей, которая изменяет настройки log4j во время выполнения:
public void changeLogFileName(String filename) {
props.setProperty("log4j.appender.A1","org.apache.log4j.DailyRollingFileAppender");
props.setProperty("log4j.appender.A1.DatePattern","'-'ddMMyyyy");
props.setProperty("log4j.appender.A1.File",filename);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
Все работает нормально, если только оператор LogManager.resetConfiguration () и / или PropertyConfigurator.configure (props) не выполняет пустой файл журнала по умолчанию (mylogfile. журнал) создается автоматически.
После этого все, что я регистрирую из моего приложения, будет правильно записано в новом файле, но в любом случае будет создан пустой файл (с именем файла журнала по умолчанию в log4j.properties).
Есть ли способ избежать создания пустого файла журнала по умолчанию?