2010-07-25 13 views
34

¿Es posible comprimir archivos de registro (lo hago a través de RollingFileAppender)?Comprimir archivos Log4j

+0

¿Qué quieres decir con compres? ¿Simplificar? ¿O realmente comprimir, que tienes que descomprimir? –

+0

Comprimir (comprimido, por ejemplo) al archivo –

Respuesta

37

log4j extras tiene soporte para que:

sólo tiene que añadir lo siguiente a su configuración RollingFileAppender y que tiene el extremo nombre de archivo en .gz automágicamente comprimir los archivos de registro:

<appender...> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/> 
    </rollingPolicy> 
</appender> 

cheque aquí por algunos detalles en el javadoc:

http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html

Espero que haya ayudado

+11

¿Cómo puedo agregarlo al archivo de propiedades? > 'Log4j.appender.DefaultLog = org.apache.log4j.RollingFileAppender log4j.appender.DefaultLog.File = $ {} mailbox.root /logs/application.log log4j.appender.DefaultLog.MaxFileSize = 50MB log4j.appender .DefaultLog.MaxBackupIndex = 100 log4j.appender.DefaultLog.layout = org.apache.log4j.PatternLayout log4j.appender.DefaultLog.layout.ConversionPattern =% d% p [% c] -% m% n' – MiKu

+1

cuáles son ** ¿para? – imdhmd

+0

Es la forma en que se especifica un comodín en Java para incluir directorios, en oposición a '*', que es solo para archivos. – hd1

2

Sé que esto no responde exactamente a su pregunta, pero sí propone una solución alternativa. La forma en que lo manejamos es ejecutar un proceso por lotes al final del día que comprime los archivos de registro anteriores hasta la fecha actual, deshacerse de cualquier elemento anterior a una semana y luego copiarlos en otro servidor de archivos . De esta forma, la aplicación no necesita consumir ningún ciclo de CPU haciendo esto y en el servidor tenemos registros que no son más antiguos que una semana y en otro servidor de archivos tenemos archivos de registro más antiguos.

1

La única otra cosa que veo es actualizar log4j a más de 1.3.15/1.4 y usar el rodillo TimeBasedRollingPolicy para tener habilitada la compresión automática, pero eso requeriría una actualización de log4j esencialmente (y compatibilidad de la aplicación también)

Hmmm..puede ser otra cosa mejor que tener es dejar que log4j ejecute un comando una vez que se ha lanzado el archivo. Entonces, en lugar de gzip, puedo usar alguna otra lógica de compresión como bzip o lzop, etc. ese sería otro enfoque si tuviera esta facilidad en log4j hoy.

16

Me encontré con esta gran respuesta, pero luego seguí investigando un poco y log4j 2 está fuera!

Ahora puede tener compresión con la biblioteca básica y mucho, mucho más ... ¡es simplemente increíble!

RollingFileAppender - Estaba buscando algo que tuviera tanto tiempo de duración como de tamaño, y con compresión ... ¡tiene ambos! y puedo soltar mi biblioteca syslog4j ya que esta también la tiene.

No utilice log4j 1.2 + extras a menos que realmente tenga que hacerlo.

+0

Estoy de acuerdo. Es increíble que ahora lo tengamos estándar en log4j 2, pero a partir de este momento, log4j 2 está en beta.Aun así, animo a cualquiera que pueda, use la versión beta y ayude a mejorarla antes de su lanzamiento. –

+0

sí, la versión beta estaba programada para finalizar en junio, pero todavía está en curso ... una lástima. Me ha funcionado bien pero la política no dicta ningún código beta en producción. – Daren

Cuestiones relacionadas