2012-04-03 14 views
6

Estoy usando la biblioteca de Apache commons y log4j. Tengo un archivo de configuración xml y un archivo log4j.properties. Deseo especificar mi ruta de acceso a las propiedades de log4j dentro de mi archivo de configuración xml. Para cargar la configuración de mi yo:log4j problema de advertencia - apache commons

//Loading my xml file 
this.config = new XMLConfiguration(this.xmlFileName); 

En este momento se plantean las siguientes advertencias:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Sin embargo aún no he llamado cualquier objeto log4j. Una vez que haya leído el archivo xml, puedo trabajar con éxito con mi instancia de log4j. ¿Hay alguna manera de eliminar esas advertencias?

Respuesta

1

salidas Log4J este error cuando se crea un registrador, pero no appender (s) es (son) definido. En la práctica, este error se produce cuando se crea un registrador antes de iniciar log4j.

Dice que no ha llamado a ningún objeto log4j. Pero en el mensaje de error puede ver que org.apache.commons.configuration.ConfigurationUtils crea un objeto registrador (vea la línea 66).

Usted puede apagarlo antes de la inicialización, vea How to turn off log4j warnings?

Logger.getRootLogger().setLevel(Level.OFF); 

No debería haber ninguna necesidad de volver a encenderla ya que la inicialización establece normalmente el nivel de registro del registrador de la raíz.

+0

Ok, ¿hay alguna forma de deshabilitar LOG dentro de 'org.apache.commons.configuration.ConfigurationUtils' o configurar mis propiedades de log4j en mi configuración xml? – PapaSmurf

4

Comprobar si el archivo log4j.properties se encuentra en la ruta de clase

Este enlace puede ser útil: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

+0

no quiero insertar mis log4j.properties en la ruta de clase, ya que se coloca externa a la jarra y en otro directorio. Quiero cargarlo en tiempo de ejecución, usando la ruta especificada en el archivo de configuración de mi aplicación. – PapaSmurf

0

al menos debe establecer el appender y el nivel de registrador para el registrador de la raíz en el log4j cargado archivo de configuración. De lo contrario, verá este mensaje de advertencia.

Ejemplo de ajuste del nivel appender y de registrador para el registrador de root:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below. 
log4j.rootLogger=DEBUG, CONSOLE 

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
0

resuelvo mi problema con esta solución:

//Disable log level 
Logger.getRootLogger().setLevel(Level.OFF); 

Ahora puedo leer mi archivo de configuración XML sin advertencias.
Después nivel de registro:

Logger.getRootLogger().setLevel(Level.INFO); 
+0

¿No es esta la solución que sugerí en mi comentario debajo de mi publicación? – ChrLipp

Cuestiones relacionadas