1

我正在使用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直到之後纔會被激活,因爲我的所有包都是,所以沒有輸出我感興趣的日誌信息。我嘗試在我的第一個包中創建@ReferenceLogLevel,嘗試強制激活osgi-loglistener-slf4j,但沒有成功。

我怎樣才能得到osgi-loglistener-slf4j之前激活一切?我已經閱讀了關於開始關卡的信息,但是我一直無法找到關於如何在我的上下文中應用它們的任何信息(即桌面而不是服務器,因此沒有PAX或Karaf; Maven;我使用NetBeans,因此沒有Eclipse)。

+0

我解決這個問題通過實現我自己的日誌服務(實現'org.osgi.service.log.LogService')作爲Slf4j的包裝。也許這是最好的選擇。 –

+0

您可以使用[felix start levels](https://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-configuration-properties.html)來調整啓動順序。並使osgi-loglistener-slf4j級別1和其他捆綁級別2 – pd40

+0

@ pd40:感​​謝您的建議。我確實追求這一思路,但我不清楚如何爲每個捆綁包設置起始級別。我收集Eclipse有一個這樣做的機制,但我一直無法找到如何在Maven或NetBeans中執行此操作。 –

回答

0

Drombler FX使用SLF4J:http://www.drombler.org/drombler-fx/0.7/docs/tutorial/logging.html#logging

只需使用下面,它應該工作:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

... 

private static final Logger LOG = LoggerFactory.getLogger(MyClass.class); 

在POM添加以下的依賴:

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 
+0

這就是我所做的。謝謝。 –

相關問題