2013-02-20 46 views
1

我想知道如何從嵌入在我的應用程序中的資源加載Log4j的配置文件?如何從資源加載Log4j2配置文件

也就是說,我沒有計算機本身的文件,該文件嵌入在我的應用程序中,我想加載它。

以下是我使用的代碼:

ConfigurationSource source = new ConfigurationSource(Main.class.getResourceAsStream("/in/gunbound/prelauncher/server/log4j2/log4j2.xml")); 
ConfigurationFactory factory = (ConfigurationFactory) XMLConfigurationFactory.getInstance().getConfiguration(source); 
ConfigurationFactory.setConfigurationFactory(factory); 

但結果是此異常:

異常在線程 「主要」 java.lang.ClassCastException: org.apache.logging。 log4j.core.config.XMLConfiguration無法轉換爲 到org.apache.logging.log4j.core.config.ConfigurationFactory在 in.gunbound.prelauncher.server.Main.main(Main.java:62)

我不想讓設置文件對用戶可見,所以我遇到了這個問題,你知道嗎?

任何人都可以幫助我嗎?

謝謝。

回答

1

請參閱this以供參考。

XMLConfigurationFactory.getInstance().getConfiguration(source);的返回類型是Configuration而不是ConfigurationFactory

+0

沒錯。我試圖將此類型轉換爲ConfigurationFactory,但未獲得成功。你能幫我達到目標嗎?基本上,問題是,我在XML Log4j2中有一個配置文件,但它作爲一個資源嵌入到我的應用程序中,我想從中加載設置,而不是讓配置文件對用戶可見,明白嗎? – Thainan 2013-02-20 13:41:50

+0

log4j.xml駐留在哪裏?在一個jar文件中? – 2013-02-20 13:44:18

+0

我在我的應用程序中創建了一個包,並導入了XML文件,即它將被嵌入到JAR中,當我生成它時,您知道嗎? 我會這樣做,因爲我不希望設置文件對用戶可見。 – Thainan 2013-02-20 16:41:51