¿Cómo configurar log4j.propiedades a tener exactamente un archivo de registro por la ejecución de una aplicación.
He leído que se debe utilizar una marca de tiempo en el nombre de archivo, pero que va a crear muchos archivos por ejecutar como pasa el tiempo.

Traté de DailyRollingFileAppender y RollingFileAppender pero no puede encontrar una manera de configurar exctly un registro por ejecutar. El registro no debe ser roto en varios registros, y no debería ser truncado y los archivos de la vieja corre debe ser preservado.

Cada clase tiene un static org.slf4j.Logger para que el propio nombre de la clase:

private static final Logger log = LoggerFactory.getLogger(Foo.class);

Este es mi actual log4j.propiedades

log4j.rootLogger=error, RootAppender, RootErrorAppender
#log4j.logger.com.example=info, qspaBackendAppender, stderr
log4j.logger.com.example=info, qspaBackendAppender
log4j.additivity.com.example=true
#log4j.logger.com.example.util=trace, qspaBackendAppender, stderr
#log4j.additivity.com.example.util=true
log4j.appender.qspaBackendAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.qspaBackendAppender.file=logs/qspaBackend.log
log4j.appender.qspaBackendAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.qspaBackendAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%-5p %c{1}:%L - %m%n
log4j.appender.RootAppender=org.apache.log4j.RollingFileAppender
log4j.appender.RootAppender.file=logs/root.log
log4j.appender.RootAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n
log4j.appender.RootErrorAppender=org.apache.log4j.RollingFileAppender
log4j.appender.RootErrorAppender.file=logs/rootError.log
log4j.appender.RootErrorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootErrorAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n
log4j.appender.RootErrorAppender.threshold=error

OriginalEl autor lilalinux | 2013-10-02

3 Comentarios

  1. 2

    Combinar la respuesta de Udo Klimaschewski y la respuesta de este pregunta con el fin de obtener el resultado deseado.

    1. agregar la propiedad append = false
    2. agregar una actual.el tiempo del sistema de propiedad y uso de ti en el nombre de archivo
    Perfecto! Exactamente lo que estaba buscando y mucho más simple que una costumbre FileAppender como esto: veerasundar.com/blog/2009/08/…, Pero probablemente no es seguro para concurrente de las ejecuciones, pero esto no es un problema para mí
    «La respuesta de la Udo Klimaschewski’ -> usted se acaba de vinculación para el perfil de usuario. No sabemos a qué se refiere.

    OriginalEl autor Udy

  2. 13

    Tuve problemas de la recuperación de la que Udo Klimaschewski la respuesta de Udy se refería así que pongo aquí mi solución.
    log4j.propiedades:

    # Root logger option
    log4j.rootLogger=INFO, fileout
    # Direct log messages to file
    log4j.appender.fileout=org.apache.log4j.FileAppender
    log4j.appender.fileout.File=/logs/myapp_${current.date}.log
    log4j.appender.fileout.ImmediateFlush=true
    log4j.appender.fileout.Threshold=debug
    log4j.appender.fileout.Append=false
    log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
    log4j.appender.fileout.layout.conversionPattern=%5p | %d | %m%n

    A continuación, poner en la clase principal de este bloque:

    public class Starter {
    static{
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hhmmss");
    System.setProperty("current.date", dateFormat.format(new Date()));
    }
    usted robó Klimaschewski la respuesta 🙁
    Robaron !!! Si usted sigue anterior enlace, no veo ninguna respuesta de Klimaschewsky ! Lo que han hecho Tobia Zambon es perfectamente correcta. Él tiene incluso la honestidad para hacer referencia a su autor. Bravo !
    El código para definir el Sistema de Propiedad se puede poner al principio de la función main() que ha sido definido como estática.
    Una propiedad no es igual a la variable de entorno de DOS. El uso de nombre de USUARIO en el archivo de Registro, usted debe definir en static {} el bloque o función principal. Sería interesante que Tobia Zambon agregar nombre de USUARIO en nombre de archivo 🙂 En Windows 7, el código para agregar es » del Sistema.setProperty(«nombre de USUARIO», Sistema.getenv(«NOMBRE»));`
    @tobia-zambon -_-

    OriginalEl autor Tobia Zambon

  3. 0

    Para iniciar un nuevo archivo de registro en la aplicación de inicio puede que desee utilizar OnStartupTriggeringPolicy

    Activación De Las Políticas De

    Ejemplo de configuración XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="DEBUG">
    <Properties>
    <Property name="log-path">C:/Logs/</Property>
    </Properties>
    <Appenders>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
    </layout>
    </appender>
    <RollingFile name="RollingFile" fileName="${log-path}/app.log"
    filePattern="${log-path}/app-%d{yyyy-MM-dd}-%i.log">
    <PatternLayout>
    <pattern>%d{dd/MM/yyyy HH:mm:ss} [%-5p/%t]: %C{1}(%L): %m%n</pattern>
    </PatternLayout>
    <Policies>
    <SizeBasedTriggeringPolicy size="10MB"/>
    <OnStartupTriggeringPolicy />
    </Policies>
    <DefaultRolloverStrategy max="100"/>
    </RollingFile>
    </Appenders>
    <Loggers>
    <Logger name="root" level="debug" additivity="false">
    <appender-ref ref="RollingFile" level="debug"/>
    <appender-ref ref="console" level="debug"/>
    </Logger>
    <Root level="debug" additivity="false">
    <AppenderRef ref="RollingFile"/>
    </Root>
    </Loggers>
    </Configuration>

    Funciona bien para mí

    OriginalEl autor Vadim Zin4uk

Dejar respuesta

Please enter your comment!
Please enter your name here