¿Necesita un ejemplo de trabajo de la configuración de log4j RollingFileAppender través de las propiedades

StackOverflow https://stackoverflow.com/questions/3823977

  •  26-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando log4j para el registro, y un archivo de propiedades para la configuración. Actualmente, mis archivos de registro son demasiado grandes (3,5 GB es demasiado grande para un archivo de registro). Así piensan Tengo que utilizar RollingFileAppender - pero cuando lo hago por lo que el archivo de registro sigue creciendo demasiado grande. Creo que acabo de mal configurado ella; ¿alguien tiene un trabajando ejemplo de la configuración RollingFileAppender?

Para el registro, mis miradas actuales de configuración como esta:

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=99
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

Una alternativa a RollingFileAppender también sería una buena solución.

¿Fue útil?

Solución

  

Creo que acabo de mal configurado ella; ¿alguien tiene un ejemplo práctico de configuración RollingFileAppender?

Esto parece muy bien el trabajo para mí @mcherm. Véase más abajo.

¿Estás seguro que está utilizando los log4j.properties que se cree que es? Intente cambiar el .File a otra ruta para ver si la salida del registro va al nuevo archivo. ¿Qué versión de log4j está usando? Estoy corriendo 1.2.15.

Espero que esto ayude.


He creado el siguiente programa de prueba:

package com.j256.ormlite;
import org.apache.log4j.Logger;
public class Foo {
    private static Logger logger = Logger.getLogger(Foo.class);
    public static void main(String[] args) {
        for (int x = 0; x < 10000000; x++) {
            logger.error("goodness this shouldn't be happening to us right here!!!!");
        }
    }
}

Mi archivo log4j.properties sostiene:

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=5
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

Tenga en cuenta que me quita el DatePattern que no era válido para mi RollingFileAppender. Mi diseño es:

package com.j256.ormlite;
import org.apache.log4j.spi.LoggingEvent;
public class Log4JSimpleLayout extends org.apache.log4j.Layout {
    @Override
    public String format(LoggingEvent event) {
        return "log message = " + event.getMessage().toString() + "\n";
    }
    @Override
    public boolean ignoresThrowable() {
        return true;
    }
    public void activateOptions() {
    }
}

Correr con -Dcatalina.base=/tmp/ obtienen archivos en /tmp/logs/ que suben al índice # 5 y son 10 MB de tamaño. Si sintonizar la MaxFileSize o la MaxBackupIndex, se ajusta adecuadamente.

Otros consejos

Su problema podría estar con el hecho de que está especificando un DatePattern. El DatePattern está destinado a ser usado con el DailyRollingFileAppender para especificar la fecha en que el archivo de registro debe rodar. No creo que se puede utilizar en conjunción con los atributos MaxFileSize y MaxBackupIndex. Log4j le permite rodar archivos basado en el tamaño del archivo o la fecha pero no ambos.

Cuando necesitamos archivos de registro para ser enrollados sobre una base diaria, que debe ser el uso de DailyRollingFileAppender en lugar de RollingFileAppender. No es necesario especificar el límite MaxFileSize cambio sólo DatePattern es suficiente para rodar los archivos en función de la frecuencia. He intentado el siguiente configuración en el archivo de registro log4j.properties para rodar archivos cada minuto.

  

log4j.appender.infoAppender = org.apache.log4j.DailyRollingFileAppender

     

log4j.appender.infoAppender.Threshold = INFO

     

log4j.appender.infoAppender.DatePattern = '' aaaa-MM-dd HH-mm

     

log4j.appender.infoAppender.File = C: /logs/info.log

Start estableciendo el parámetro JVM -Dlog4j.debug. Que imprime unas pocas líneas útiles de información de depuración que muestra qué archivo de configuración se encuentra y se está utilizando, etc. Eso te dará algunas pistas sobre lo que va mal.

http://logging.apache.org/log4j/1.2/manual.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top