2015-06-13 41 views
12

Chcę użyć adaptera log4j2 JUL w środowisku OSGi. Więc bezpośrednio stosowane log4j2 wiązek OSGi i ustaw następujące właściwości systemu w jednym z moim niestandardowym OSGi wiązki jak wspomniano here:Jak ustawić właściwość systemową dla adaptera log4j2 JUL w środowisku OSGi

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

Wydaje się, że ten obiekt systemu nie jest ustalone, ponieważ dzienniki pochodzące z Jawy util ram nie będzie do aplikantów.

Ramy OSGi, których używam to Eclipse Equinox.

Gdzie mogę ustawić tę właściwość systemową do pracy z OSGi?

EDIT:

O ile zrozumiałem tutaj problem polega na bardzo błagając o JVM uruchomić wymagane nieruchomość tj java.util.logging.manager jest ustawiona na wartość domyślną, więc ustawienie to wewnątrz środowiska OSGi nie jest Efektywny, nawet nie możemy ustawić tej właściwości przy użyciu opcji -D, ponieważ paczki OSGi log4j2 nie są narażone na ścieżkę klasy, więc występuje wyjątek klasy nie znaleziony.

Każda pomoc jest bardzo wdzięczna w tej sprawie.

+0

Mam również do czynienia z tym problemem. Rozwiązałeś to? – hbelmiro

Odpowiedz

3

Generalnie, jeśli ustawienie właściwości przez System.setProperty API nie działa OK (może dlatego, że nieruchomość została już odczytać przed można nawet zastąpić go), należy spróbować ustawić go od samego początku JVM, wpisując " -D "argumenty w linii poleceń:

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

To nie działa, ponieważ aby ustawić tę właściwość słoiki log4j2 muszą znajdować się w ścieżce klasy, ale klasy log4j w środowisku OSGi nie są widoczne dla ścieżki głównej klasy Java. Więc jeśli spróbujemy ustawić tę właściwość w ten sposób, otrzymamy wyjątek class not found. – Grant

+0

@Grant spójrz na http://stackoverflow.com/a/43876384/3245762, aby rozwiązać problem z classpath. – hbelmiro