2015-06-13 26 views
12

我想在OSGi環境中使用log4j2 JUL適配器。所以我直接用log4j2 OSGi包,並提到here設置下面的系統屬性在我的自定義OSGi包之一:如何在OSGi環境中爲log4j2 JUL適配器設置系統屬性

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

好像這個系統屬性未設置,因爲日誌從Java未來util的框架不會給appender。

我正在使用的OSGi框架是Eclipse Equinox

我在哪裏可以設置這個系統屬性來使用OSGi?

編輯:

據我瞭解這裏的問題是在非常乞討的JVM啓動所需的特性,即java.util.logging.manager被設置爲默認值,OSGi環境內部,設置這不是有效的,即使我們不能使用-D選項來設置此屬性,因爲log4j2 OSGi包不會暴露給類路徑,因此不會找到該類發生異常。

任何幫助都非常感謝這件事。

+0

我也面臨這個問題。你解決了嗎? – hbelmiro

回答

3

一般情況下,如果通過System.setProperty API設置屬性不起作用OK(也許是因爲財產已經被閱讀之前你甚至可以覆蓋它),你應該嘗試從一JVM啓動設置它,進入「 D「參數:

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

這不起作用,因爲要設置此屬性,log4j2 jar需要位於類路徑中,但OSGi環境中的log4j類對主要Java類路徑不可見。所以如果我們試圖設置這個屬性,我們會得到類沒有發現異常。 – Grant

+0

@Grant查看http://stackoverflow.com/a/43876384/3245762來解決類路徑問題。 – hbelmiro

相關問題