2011-11-11 50 views
1

在NetBeans平臺應用程序中打包log4j配置文件顯然需要一些思考。這是我試過的...如何在NetBeans Platorm應用程序中打包log4j配置文件?

我把log4j.xml放在some_netbeans_module的src/main/resources/my/package/log4j.xml中。該包是一個公共模塊包(即來自該包的類是從其他包使用的)。我重建了模塊並確認該文件實際上已被打包到模塊中。

在我的課,我得到記錄器的實例,我一直做的方式:

static final Logger log = Logger.getLogger(ThisClass.class); 

每一個NetBeans平臺應用程序有一個my_app.conf文件,這使得它可以設置某些屬性。這是我設置log4j.conf:

log4j.configuration="/my/package/log4j.xml" 

現在,當我運行應用程序,我看到下面的輸出:

[INFO] /home/me/my_app/application/target/my_app/bin/../etc/my_app.conf: 5: 
log4j.configuration=/my/package/log4j.xml: not found 

有什麼不對上述配置?

回答

2

my_app.conf文件,如果你的log4j.configuration屬性附加到default_options財產,像這樣:

default_options="...<other options> -J-Dlog4j.configuration=my/package/log4j.xml" 

那麼這個選項將會得到傳遞給JVM。請注意,log4j財產已附加到-J-D。 NetBeans使用-J來描述JVM屬性,而-D被JVM使用到delineate a system property

你也可以/應該放棄引號和初始/的報價是沒有必要的,如果你有初始/

的另一種方式做到這一點,和路,因爲我更喜歡NetBeans將抱怨它不需要編輯.conf文件,就是將log4j.xml文件放入默認包中。如果您有其他要求阻止您執行此操作,請記住,您必須將log4j.configuration屬性放入應用程序的platform.properties文件中,同時處於開發模式並在IDE內運行應用程序。像這樣:

run.args.extra=-J-Dlog4j.configuration=my/package/log4j.xml 

編輯:有關NetBeans平臺,你可能有更好的運氣張貼到NetBeans Platform Users論壇的問題。

+0

今天晚些時候我會試一試,看看它給我帶來了什麼。不過我並不太樂觀:我找到了my_app.conf文件的樣本,它們完全像我一樣設置log4j.configuration參數。我發現這個方法如果可行,比在default_options中將其添加爲JVM屬性更簡潔一些。我絕對讚賞這個建議! –

+0

當然。讓我們知道它是如何變成的 –

+0

我修改了一下,發現/ my/package與我的/ package(無開始的斜槓)以及conf中的變量相同。文件不是系統屬性,而是真正的環境變量,這就是之前無法使用的原因。謝謝。 ;) –

相關問題