es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for 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 archivo app.log.

    Para solucionar este problema, se pueden realizar algunos pasos de configuración adicionales:

    1. Asegurarse de que el proyecto de Maven esté utilizando el archivo de configuración log4j2.xml correcto:

      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.

    2. 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 que baseDir esté definido correctamente en la sección Properties y apunte al directorio correcto donde se deben generar los registros.

    3. 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.

    4. 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.

Comments are closed.