Файл журнала засоряется при втором запуске, если я запускаю Java-приложение 2 раза подряд
Мне нужен ваш совет, так как я не знаком с log4j. У меня есть проект Java с использованием Maven. Моя конфигурация позволяет мне иметь только один файл журнала в день. Так что прямо сейчас, если я запускаю свое приложение 2 раза подряд, файл журнала засоряется при втором запуске. У меня никогда не будет журнала с первого запуска. Я хотел бы иметь возможность получать новый файл журнала каждый раз, когда я запускаю свое приложение.
Вот как я запускаю свое приложение через командную строку:
java -cp .;MyProject.jar com.data.utils.project.main.Main > .\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.txt
Он генерирует файл журнала с именем: log_total_20170728.txt
У меня есть зависимость log4j в моем файле pom.xml:
Ниже мой контент log4j.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" />
</layout>
</appender>
<appender name="logfile" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="log/log_total.log" />
<param name="MaxFileSize" value="1000KB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" />
</layout>
</appender>
<root>
<priority value="INFO"/>
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
1 ответ
Чтобы получить новый файл журнала после каждого запуска, каждое имя файла журнала должно быть каким-то образом уникальным, чтобы оно не перезаписывалось. Самый простой способ - добавить метку времени к имени файла журнала. Следующая модификация добавляет часы, минуты, секунды и миллисекунды к имени файла журнала:
java -cp .;MyProject.jar com.data.utils.project.main.Main >
.\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.txt
Полученное имя файла журнала должно выглядеть примерно так:
log_total_20170728_15140437.txt