Log4j DailyRollingFileAppender
не выведет пустой файл, если не было зарегистрировано. Из реализации:
/**
* This method differentiates DailyRollingFileAppender from its
* super class.
*
* <p>Before actually logging, this method will check whether it is
* time to do a rollover. If it is, it will schedule the next
* rollover time and then rollover.
* */
protected void subAppend(LoggingEvent event) {
Если вы можете перейти на log4j2, вы можете использовать Политика запуска по времени
TimeBasedTriggeringPolicy вызывает опрокидывание один раз на дату / время
шаблон больше не применяется к активному файлу. Эта политика принимает
Атрибут Интервал, который указывает, как часто ролловер
происходят на основе шаблона времени и логического атрибута модуляции.
И ваша конфигурация должна быть такой: дальнейшее объяснение вы можете прочитать в здесь :
<RollingFile name="RollingFile">
<FileName>C:/log/mylog.log</FileName>
<FilePattern>C:/log/time-based-logs/%d{yyyy-MM-dd-hh-mm}.log.zip</FilePattern>
<PatternLayout>
<Pattern>%d{yyyy-MM-dd}.log.zip [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>