2009-04-01 8 views
5

Quando si distribuisce la mia applicazione web OSGi utilizzando il equinox servlet bridge ottengo il seguente:Come configurare Log4J quando si distribuisce un'app OSGi con Equinox Servle Bridge su 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. 

ho provato diversi modi di fornire i "log4j.properties" necessari di file, tra cui:

  • aggiungendo il al contesto param "log4jConfigLocation" al bridge servlet web.xml
  • creazione di una cartella "classi" nella cartella WEB-INF e copia del file log4j.properties lì (e copia in molte altre posizioni)
  • rimuovendo il mio bund4log bundle e impostando "extendedFrameworkExports" su org.apache.log4j così (suppongo) che il tomcat log4j sia usato ... questo non ha funzionato perché le mie dipendenze hanno bisogno di alcune classi slf4j che sono fornite come frammento per il bund4 log4j ... che non c'è più ...

Naturalmente ho anche un fascio frammento che si estende il fascio log4j con un file log4j.properties, ma sembra che questo pacchetto log4j non è utilizzato.

AGGIUNTO: Aggiungo che sto sviluppando l'applicazione in Eclipse ... e il mio bundle di frammenti che configura log4j/slf4j funziona lì.

Qualcuno ha risolto questo? Qualche idea?

risposta

3

Ho trovato il mio errore. Il frammento che dovrebbe fornire il file log4j.properties non lo includeva, perché non l'ho aggiunto alla build binaria in build.properties.

2

UPDATE: Questo non aiuta con il problema ...

io sono solo ricercando OSGi me stesso.

Non proprio quello che stai cercando, ma il seguente post discute lo stesso problema quando si utilizza l'equinozio di vaniglia (ad esempio: non ospitato all'interno di tomcat/jetty).

Suggerisce di creare un "pacchetto di frammenti" (esempio disponibile per il download) per conservare log4j.properties. Forse potresti provare qualcosa di simile?

O forse hai solo bisogno di posizionare il log4j.properties all'interno di META-INF della tua GUERRA?

+0

1. L'approccio del bundle di frammenti di solito non sembra funzionare quando si distribuisce l'applicazione su Tomcat come .war. 2. la mia guerra non aveva ancora una cartella META-INF, ma ho provato e anche non funziona (ho provato tutte le cartelle esistenti come WEB-INF, WEB-INF/eclipse, ...) – arturh

+0

scusa non ho potuto essere più d'aiuto .. – toolkit

3

Grazie arturh. Ho avuto lo stesso problema. Ho aggiunto log4j.properties alla mia cartella/src.

+1

In seguito a questo, ho avuto un problema successivo in cui, mentre i miei pacchetti di applicazioni stavano registrando con successo tramite il frammento di configurazione log4j, altri non lo erano. La soluzione era assicurarsi che quei bundle avessero org.apache.log4j nell'attributo "Import-Package:", anche se non avevano bisogno esplicitamente dell'importazione per la compilazione. Hanno quindi trovato il mio file log4j.properties tramite il frammento, ospitato dal pacchetto log4j. – nevh

+0

Grazie per il suggerimento! Felice di poter essere di aiuto. – arturh

Problemi correlati