2009-04-01 20 views
5

Al desplegar mi aplicación web OSGi utilizando el equinox servlet bridge consigo el siguiente:¿Cómo configurar Log4J al implementar una aplicación OSGi con Equinox Servle Bridge para Tomcat?

log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener). 
log4j:WARN Please initialize the log4j system properly. 

He intentado varias formas de suministrar los "log4j.properties" necesarias archivo, incluyendo:

  • añadiendo el contexto- param "log4jConfigLocation" al puente de servlet web.xml
  • creando una carpeta "classes" en la carpeta WEB-INF y copiando allí mi archivo log4j.properties (y copiándolo en varias otras ubicaciones)
  • eliminando mi paquete log4j y estableciendo "extendedFrameworkExports" en org.apache.log4j, así que (supongo) se usa el tomcat log4j ... esto no funcionó porque mis dependencias necesitan algunas clases slf4j que se proporcionan como un fragmento para el paquete log4j ... lo que ya no está allí ...

Por supuesto, también tengo un paquete fragmento que se extiende el paquete log4j con un archivo log4j.properties, pero parece que no se utiliza este paquete log4j.

añadido: debo añadir que estoy desarrollando la aplicación en Eclipse ... y mi paquete fragmento que configura log4j/slf4j trabaja allí.

¿Alguien ha resuelto esto? ¿Algunas ideas?

Respuesta

3

Encontré mi error. El fragmento que debería proporcionar el archivo log4j.properties no lo incluyó, porque no lo agregué a la compilación binaria en build.properties.

2

ACTUALIZACIÓN: Esto realmente no ayuda con su problema ...

Estoy investigando OSGi mí mismo.

No es exactamente lo que está buscando, pero el siguiente post analiza el mismo problema cuando se utiliza el equinoccio de vainilla (es decir: no alojado en tomcat/embarcadero).

Sugiere crear un 'paquete de fragmentos' (ejemplo disponible para descargar) para contener su log4j.properties. Tal vez podrías intentar algo similar?

O tal vez solo necesita colocar el log4j.properties dentro de META-INF de su WAR?

+0

1. el enfoque del paquete de fragmentos que usualmente toma aparentemente no funciona cuando implementa su aplicación a tomcat como .war. 2. mi guerra todavía no tenía una carpeta META-INF, pero lo intenté y tampoco funciona (he probado todas las carpetas existentes como WEB-INF, WEB-INF/eclipse, ...) – arturh

+0

lo siento, no podría ser más ayuda. – toolkit

3

Gracias arturh. Tuve el mismo problema. Agregué log4j.properties a mi carpeta/src.

+1

En respuesta a esto, tuve un problema posterior donde, mientras mis paquetes de aplicaciones se registraban a través del fragmento de configuración de log4j con éxito, otros paquetes no lo eran. La solución fue garantizar que esos paquetes tuvieran org.apache.log4j en su atributo "Import-Package:", aunque no necesitaban explícitamente la importación para la compilación. Luego encontraron mi archivo log4j.properties a través del fragmento, alojado por el paquete log4j. – nevh

+0

¡Gracias por el consejo! Me alegro de poder ser de ayuda. – arturh

Cuestiones relacionadas