2010-05-05 48 views
30

¿Cómo podemos especificar eran log4j tiene que mirar cuando se trata de encontrar su archivo de configuración XML?Dónde colocar log4j.xml

Parece que, por defecto, log4j se ve en la raíz de una carpeta de clase, puedo decir que el uso de la funcionalidad de depuración log4j y funcionando mi aplicación desde el IDE.

Sin embargo, no tengo ninguna carpeta de clase en mi tarro más. Y el archivo log4j.xml está en la raíz del contenedor.

que ya han tratado de establecer la opción -Dlog4j.configuration = log4j.xml pero no funciona.

Aquí está la estructura global de mi solicitud en la actualidad

  • com
  • lib
  • meta-inf
  • log4j.xml
+1

cuando se usa log4j 2.0 o más, el nombre del archivo debe ser 'log4j2.xml' – Francois

Respuesta

29

Se encuentra el log4j. xml usando CLASSPATH. Si log4j no encuentra ningún archivo de configuración, enviará un error a la consola. Si no ve ningún error de este tipo, es probable que encuentre un archivo de configuración que puede no ser el que está editando. Existe una opción de línea de comando para obligar a Log4J a informar la ruta del archivo de configuración que está utilizando.

De http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

Si se ejecuta con "-Dlog4j.debug", entonces log4j imprimirá información a salida estándar dice cómo se está tratando de configurarse a sí mismo. Mirando a través de ese le dirá dónde está buscando el archivo de configuración.

+0

Log4j.xml está en la raíz de mi carpeta. Y esta carpeta está incluida en mi classpath. Sin embargo, no parece ser detectado por log4j ...:/ – Farid

+0

Conozco esta funcionalidad de depuración, pero parece que no funciona. El registro se acaba de imprimir en la consola, y no veo ningún registro de depuración. No tengo ningún error ... Estoy totalmente perdido. – Farid

+0

Si el parm de depuración no hace que Log4J informe la ruta y el nombre de archivo del archivo de configuración que se está cargando, me pregunto cómo se inició la aplicación. ¿Esto es a través de un archivo por lotes? ¿Qué IDE estás usando? –

5

no tengo ningún error

Así log4j está encontrando su configuración, de lo contrario se podrían obtener:

log4j: WARN No appenders hemos encontrado nada con logger ()
log4j: WARN Inicialice el sistema log4j correctamente.

también:

El registro se acaba de imprimir en la consola

Por lo que significa que es probable que tenga que definir un archivo de appender, como FileAppender o RollingFileAppender. La sección "Configuración" en the short intro tiene algunos ejemplos.

-2

No se preocupe por dónde ponerlo. Simplemente ejecute su proyecto, digamos en eclipse, log4j emitirá una excepción, indicándole dónde estaba buscando. Entonces puedes ponerlo allí.

vez que se obtiene de trabajo, también puede encontrar la manera de cambiar eso, cuando usted entienda la lógica.

+1

En Eclipse se lanza una excepción, pero no le dice dónde está buscando el archivo. – Knoxie

+0

Consola-Output dice: "ERROR StatusLogger No se encontró el archivo de configuración log4j2 Usando la configuración por defecto:... De registro sólo errores a la consola Conjunto propiedad del sistema 'log4j2.debug' para mostrar Log4j2 registro de inicialización interna" Así que no es útil, lo siento. – VinZ

3

Se puede utilizar:

DOMConfigurator.configure(log4jConfigurationFilename); 

y especifique la ubicación si es distinta de la raíz!

18

Supongamos que su configuración de log4j está fuera del árbol de fuentes. Si no puede encontrar el archivo de configuración, ayudar con:

-Dlog4j.configuration=file:///your/path/log4j.xml 

Nota el archivo calificador : ///. No funcionará sin.

+0

hi rwst: Quiero cargar laback.xml desde el argumento de tomcat vm pero esto no funciona, ¿puedes sugerir alguna idea? –

+0

Esta respuesta junto con la opción -Dlog4j.debug es perfecta para descubrir lo que está sucediendo. –

Cuestiones relacionadas