我正在使用Apache Felix,Declarative Services和Maven編寫基於OSGI的桌面應用程序。它將使用JavaFX,所以我也使用Drombler FX。在其他服務之前激活OSGI LogListener?
在我開發的軟件包中,我想使用適當的日誌記錄機制,並且我正在嘗試使Apache Felix Log正常工作。我在獲得LogService
時沒有問題,但這不足以使輸出顯示在控制檯上。
The word on the net是Everit的osgi-loglistener-slf4j
將完成這項工作 - 當然 - 在osgi-loglistener-slf4j
被激活後,日誌輸出會出現在控制檯上。
然而,osgi-loglistener-slf4j
直到之後纔會被激活,因爲我的所有包都是,所以沒有輸出我感興趣的日誌信息。我嘗試在我的第一個包中創建@Reference
到LogLevel
,嘗試強制激活osgi-loglistener-slf4j
,但沒有成功。
我怎樣才能得到osgi-loglistener-slf4j
之前激活一切?我已經閱讀了關於開始關卡的信息,但是我一直無法找到關於如何在我的上下文中應用它們的任何信息(即桌面而不是服務器,因此沒有PAX或Karaf; Maven;我使用NetBeans,因此沒有Eclipse)。
我解決這個問題通過實現我自己的日誌服務(實現'org.osgi.service.log.LogService')作爲Slf4j的包裝。也許這是最好的選擇。 –
您可以使用[felix start levels](https://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-configuration-properties.html)來調整啓動順序。並使osgi-loglistener-slf4j級別1和其他捆綁級別2 – pd40
@ pd40:感謝您的建議。我確實追求這一思路,但我不清楚如何爲每個捆綁包設置起始級別。我收集Eclipse有一個這樣做的機制,但我一直無法找到如何在Maven或NetBeans中執行此操作。 –