Pregunta

Utilicé log4j en un programa java. Lo inicialicé con:

BasicConfigurator.configure(); // logger configuration
try {
     logger.setLevel(Level.DEBUG);
} catch (Exception e) {
     System.out.println("Logfile not found");
}

Pero, durante la ejecución del programa, obtengo 3 instrucciones de registro en lugar de una. Por ejemplo,

3 lines 
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00

en lugar de una línea

1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00

¿Se deben realizar configuraciones adicionales para log4j para evitar esto?

¿Fue útil?

Solución

He experimentado un comportamiento similar, y resultó que Log4J se configuró más de una vez; utilizando el BasicConfigurator, pero también con un archivo log4j.xml que había olvidado. ¿Podría ser que haya una configuración adicional de Log4J en algún lugar de la ruta de clase?

Otros consejos

Lo más probable es que tengas más de un Anexos. Consulte el log4j manual (Sección: Anexos y diseños):

  

Cada solicitud de registro habilitada para un registrador dado se reenviará a todos los agregadores en ese registrador, así como a los agregadores más altos en la jerarquía.

Puedes intentar configurar el indicador de aditividad en falso.

Bueno, no has mostrado cómo se está ejecutando tu programa. Aquí hay un programa completo que solo muestra una sola línea:

import org.apache.log4j.*;

public class Test
{
    public static void main(String[] args)
    {
        BasicConfigurator.configure(); // logger configuration
        Logger logger = Logger.getLogger(Test.class);
        logger.setLevel(Level.DEBUG);
        logger.info("Hello");
    }
}

¿Es posible que tu código realmente se esté ejecutando tres veces?

En mi caso, estaba agregando un nuevo appender cada vez que llamé al BasicConfigurator.configure ().

Lo resolví restableciendo la configuración:

BasicConfigurator.resetConfiguration() //reset first
BasicConfigurator.configure() // then configure

Debo confesar que no entiendo claramente lo que está pasando, pero seguramente resolvió mi problema.

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