Использование Log4j
Как сказал @JavaJigs, можно использовать дополнительные функции Log4j.
Прежде всего, если вы используете Maven, добавьте его в качестве зависимости, имея в виду использовать ту же версию log4j, просто чтобы избежать любых конфликтов.
<!-- you should already have something like this -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- add this one, please note the version is the same than log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.2.17</version>
</dependency>
Затем настройте appender для использования обоих видов катаний. Это быстрый и грязный пример, который катится каждую минуту и / или когда размер файлов журнала превышает 1000 байтов.
<appender name="rollout5" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="ActiveFileName" value="log4j-current.log" />
<param name="FileNamePattern" value="log4j-%d{HH-mm}.%i.log.gz" />
</rollingPolicy>
<triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
<param name="MaxFileSize" value="1000" />
</triggeringPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
</layout>
</appender>
Добавьте appender в регистратор, как обычно.
Если вы запустите приложение, вы должны получить что-то подобное ...
log4j-current.log
log4j-18-13.1480266729211.log.gz
log4j-18-12.1480266729095.log.gz
log4j-18-12.1480266729123.log.gz
Очевидно, что количество файлов и их имена зависят от того, как ваше приложение ведет журнал.
Как видите, заполнитель %i
заменяется случайным, но постоянно увеличивающимся числом. Я не смог найти способ заменить его на число, начиная с 0, хотя. Тем не менее, такие файлы, перечисленные в алфавитном порядке, должны соответствовать их историческому порядку.
Другие идеи
Я знаю, что вы явно упомянули log4j. Но, если можете, почему бы не оценить переход на log4j2? В этом документе log4j2 есть пара примеров, которые, кажется, соответствуют вашим потребностям.