2010-12-01 24 views
7

Tengo un archivo de registro llamado app.log. Cuando se transfiere (estoy configurando cada minuto solo para fines de prueba), me gustaría que se cambiara el nombre a app-YYYY-MM-dd_HH-mm.log pero no está funcionando. Debajo está mi configuración de log4j:Usando FileNamePattern, RollingFileAppender en log4j

log4j.appender.myLog=org.apache.log4j.RollingFileAppender 
log4j.appender.myLog.rollingPolicy=TimeBasedRollingPolicy 
log4j.appender.myLog.File=logs/app.log 
log4j.appender.myLog.rollingPolicy.FileNamePattern=logs/app-%d{yyyy-MM-dd_HH-mm}.log 
log4j.appender.myLog.Append=true 
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.myLog.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n 

¿Alguien sabe cuál es el problema? Durante la reinversión, simplemente cambia el nombre del archivo al app.log.1.

Respuesta

3

que asumen que está utilizando simplemente log4j. La versión 1.2.16 es la más nueva. rollingPolicy no existe en su código fuente; solo en el archivo log4j.dtd para configuración basada en xml.

La única manera en la que obtendrá lo que quiere es descargar Apache extras companion for log4j.


Eventualmente si no desea utilizar extras Puede solucionar usando:

org.apache.log4j.DailyRollingFileAppender

Minus de esta ruta es que los archivos de registro no serán comprimidos con gzip.

3

De acuerdo con la log4j wiki: Nota

que TimeBasedRollingPolicy puede sólo se puede configurar con XML, no log4j.properties

The API no menciona que, pero tal vez ese es el problema?

+1

Esto ha sido [arreglado] (https://bz.apache.org/bugzilla/show_bug.cgi?id=36384) hace un tiempo, y log4j-1.2.16.jar o superior junto con el paquete log4j-extras funciona bien cuando se usa una política de laminación basada en el tiempo en el configurador de propiedades. Recientemente, he creado un parche para permitir que los subdirectorios recursivos se creen automáticamente al usar esta combinación: http://pastebin.com/DugN7AiZ. – Moreaki

3

Descargue log4j archivo jar extra y póngalo en la carpeta lib. también añaden la etiqueta de un rollingPolicy sigue:

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
    <param name="FileNamePattern" 
     value="D:/Apps/Enterprise_domain/diagnostics/logs/diagnostics.% d{yyyy-MM-dd_HH-mm}.log"/> 
</rollingPolicy> 
1

Por favor, compruebe que ha incluido apache-log4j-extras.jar y el uso o la versión log4j-1.2.16.jar al menos por encima de 2.17. aquí está la muestra log4j.properties que se puede usar.

#Worked with 2.17 version 
    #make log files rotate every minute or hour and zip old rotated logs 
    log4j.rootLogger=INFO, loggerId 
    log4j.appender.loggerId=org.apache.log4j.rolling.RollingFileAppender 
    log4j.appender.loggerId.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 
    log4j.appender.loggerId.rollingPolicy.ActiveFileName=worker.log 
    log4j.appender.loggerId.rollingPolicy.FileNamePattern=worker-.%d{yyyyMMdd-HHmm}.log.gz 
    log4j.appender.loggerId.layout=org.apache.log4j.PatternLayout 
    log4j.appender.loggerId.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n 

para más detalles sobre propiedades por favor compruebe here

Cuestiones relacionadas