2010-03-23 55 views
0

這是一個奇怪的請求,但我想在log4j.properties文件中設置一些jvmargs。目前我使用Ant比如設置一些ARGS ....在log4j.properties文件中設置jvmargs

jvmarg值=「 - Dmail.smtp.socketFactory.port = 465」

...但它會是巨大的,幾組將這些相關參數記錄到.properties文件中。有誰知道如何做到這一點?

在此先感謝!

+1

log4j.properties用於配置log4j ...您認爲您可以配置JVM的原因是什麼? – skaffman 2010-03-23 09:48:05

回答

0

如果屬性可以JVM啓動後加入,你可以將屬性添加到您的屬性文件,其中列出了要添加到SystemProperties集合中的所有屬性,是這樣的:

# property names of system properties 
systemprops=mail.smtp.port mail.smtp.socketFactory.class 

mail.smtp.port=465 
mail.smtp.socketFactory.class=some.class 

你的啓動代碼可以讀取systemprops值,分割空白並將結果列表的屬性添加到SystemProperties集合中,同時讀取屬性集合中的值。

這樣,您的代碼不需要知道要添加到系統道具的屬性,只需要添加的屬性由systemprops屬性定義。

1

Log4j只會在之後讀取屬性文件JVM已經啓動 - 這意味着它不會影響JVM參數。

0

如果你的例子是從你的實際情況,那麼你可以通過編程的Java郵件設置這個值...

SMTP協議提供程序支持 以下屬性,這可能是 集了JavaMail會話對象。 這些屬性始終設置爲 字符串; Type列描述瞭如何解釋字符串 。對於 例如,使用

props.put("mail.smtp.port", "888"); 

http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html

上面這個例子應該mail.smtp.socketFactory.port工作也。

+0

這是我們已經看過的東西,但理想情況下,我們希望將配置與代碼分開,以便日後可以輕鬆地在不同的日誌記錄系統中進行交換... 我試圖設置: mail.smtp .port mail.smtp.socketFactory.class mail.smtp.socketFactory.port mail.smtp.socketFactory.fallback 在ant構建文件中設置它們是可以的......但不理想:( – Thomas 2010-03-23 09:59:59

相關問題