Mi respuesta se basa en logback
, no log4j
(perdón por la confusión ...)
Puede lograr esa rotación de registros utilizando TimeBasedRollingPolicy
.
por ejemplo)
<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>
Girará a medianoche y eliminará los archivos de registro anteriores a 30 días.
fileNamePattern: el período de renovación se infiere del valor de fileNamePattern
maxHistory: la propiedad opcional maxHistory controla el número máximo de archivos de almacenamiento que se deben mantener, eliminando asincrónicamente los archivos más antiguos. Por ejemplo, si especifica una reinversión mensual y establece maxHistory en 6, los archivos de 6 meses se mantendrán con archivos de más de 6 meses eliminados. Tenga en cuenta que a medida que se eliminen los archivos de registro archivados antiguos, las carpetas que se crearon para archivar archivos de registro se eliminarán según corresponda.
Puede consultar más información en TimeBasedRollingPolicy