2015-06-13 65 views
12

Desidero utilizzare l'adattatore JUL log4j2 in un ambiente OSGi. Così ho usato direttamente fasci OSGi log4j2 e impostare la seguente proprietà di sistema in uno dei miei personalizzato fascio OSGi come accennato here:Come impostare una proprietà di sistema per l'adattatore JUL log4j2 in un ambiente OSGi

System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager"); 

Sembra che questa proprietà di sistema non è l'impostazione perché i log provenienti da Java util quadro non sta andando agli appendici.

Il framework OSGi che sto utilizzando è Eclipse Equinox.

Dove posso impostare questa proprietà di sistema affinché funzioni con OSGi?

EDIT:

Per quanto ho capito qui il problema è al mendicare della JVM avviate un'altra volta proprietà richiesta cioè java.util.logging.manager è impostato sul valore predefinito, quindi impostando questo all'interno dell'ambiente OSGi non è efficace, anche se non possiamo impostare questa proprietà usando l'opzione -D perché i bundle OSGi log4j2 non sono esposti al percorso della classe, quindi si verifica un'eccezione della classe non trovata.

Qualsiasi aiuto è molto apprezzato in questa materia.

+0

Sono anche di fronte a questo problema. L'hai risolto? – hbelmiro

risposta

3

In generale, se l'impostazione di una proprietà attraverso la System.setProperty API non funziona OK (forse perché la proprietà è già stato letto prima si può anche sovrascrivere), si dovrebbe provare a impostare fin dall'inizio JVM molto, inserendo " -D "argomenti alla riga di comando:

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
+1

Questo non funziona, perché per impostare questa proprietà i jar log4j2 devono trovarsi nel percorso della classe, ma le classi log4j nell'ambiente OSGi non sono visibili al percorso della classe java principale. Quindi se proviamo a impostare questa proprietà in questo modo otterremo un'eccezione non trovata nella classe. – Grant

+0

@Grant dai un'occhiata a http://stackoverflow.com/a/43876384/3245762 per risolvere il problema del classpath. – hbelmiro