Minha resposta é baseada logback
, não log4j
(desculpe pela confusão ..)
Você pode conseguir essa rotação de log usando TimeBasedRollingPolicy
.
por exemplo)
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern>
<!-- keep last 30 days of logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern>
</encoder>
</appender>
Ele girará à meia-noite e excluirá os arquivos de log com mais de 30 dias.
fileNamePattern: o período de sobreposição é deduzido do valor de fileNamePattern
maxHistory: A propriedade opcional maxHistory controla o número máximo de arquivos a serem mantidos, excluindo assincronamente os arquivos mais antigos. Por exemplo, se você especificar rollover mensal e definir maxHistory como 6, 6 meses no valor de arquivos serão mantidos com os arquivos com mais de 6 meses excluídos. Observe que os arquivos de log arquivados antigos são removidos, todas as pastas criadas para fins de arquivamento de arquivos de log serão removidas conforme apropriado.
Você pode verificar mais informações sobre TimeBasedRollingPolicy