RollingFile no crea un nuevo registro después de la medianoche.
java 1.8
maven 3.5
En pom.xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
En mi proyecto de Maven java quiero generar un nuevo archivo de registro cada día (medianoche).
Por lo tanto, uso RollingFile
y cron 0 0 0 * * ?
. Aquí está mi archivo log4j2.xml
<Properties>
<Property name="baseDir">logs</Property>
<Property name="patterLayout">%d{[dd.MM.yyyy HH:mm:ss.SSS]} %l %p:%n %m%n</Property>
</Properties>
<Appenders>
<Console name="Consola" target="SYSTEM_OUT">
<PatternLayout pattern="${patterLayout}"/>-
</Console>
<RollingFile name="RollingFile" fileName="${baseDir}/app.log"
filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="${patterLayout}"/>-
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/app-*.log.gz"/>
<IfLastModified age="60d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Consola"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
Pero todos los registros se imprimen en UN archivo app.log.
Aquí está el resultado:
[27.11.2021 23:59:05.235] com.myproject.xls2metro2.App.main(App.java:18) TRACE:
JDK: 1.8.0_202
[27.11.2021 23:59:05.238] com.myproject.xls2metro2.App.main(App.java:33) WARN:
File path is mandatory
[28.11.2021 00:01:13.347] com.myproject.xls2metro2.App.main(App.java:18) TRACE:
JDK: 1.8.0_202
[28.11.2021 00:01:13.351] com.myproject.xls2metro2.App.main(App.java:33) WARN:
File path is mandatory
davy.ai
Basándose en la configuración log4j2.xml proporcionada, parece que el RollingFile appender está configurado correctamente para generar un nuevo archivo de registro todos los días a la medianoche utilizando la expresión cron
0 0 0 * * ?
. Sin embargo, en el resultado proporcionado, todos los registros todavía se imprimen en un archivoapp.log
.Para solucionar este problema, se pueden realizar algunos pasos de configuración adicionales:
Por defecto, log4j2.xml debe estar en el directorio src/main/resources/. Verificar si este archivo existe en el proyecto y si está configurado correctamente.
Revisar si la ruta del archivo de registro está configurada correctamente:
En la configuración log4j2.xml proporcionada, la ruta del archivo de registro está configurada como
${baseDir}/app.log
. Asegurarse de quebaseDir
esté definido correctamente en la sección Properties y apunte al directorio correcto donde se deben generar los registros.Verificar si el archivo de registro está siendo rotado según la expresión cron:
Para confirmar si el archivo de registro se está rotando correctamente, verificar si se están generando nuevos archivos a la medianoche todos los días en el directorio especificado. Si lo están, entonces el problema puede estar en cómo se envían los mensajes de registro a log4j2, y puede ser necesario realizar una investigación adicional.
Verificar si los loggers están configurados correctamente:
En la configuración log4j2.xml proporcionada, se configura el root logger para utilizar tanto Console como RollingFile appenders. Asegurarse de que los loggers en el código estén enviando mensajes de registro a log4j2 y no a algún otro logger.
En general, garantizar que se esté utilizando el archivo de configuración log4j2.xml correcto, que la ruta del archivo de registro esté configurada correctamente y que los loggers estén configurados correctamente debería solucionar el problema de que todos los registros se impriman en un solo archivo.