これは少し奇妙な要求ですが、log4j.properties ファイルにいくつかの jvmargs を設定しようとしています。現在、たとえば、いくつかの引数を設定するためにantを使用しています....
jvmarg value="-Dmail.smtp.socketFactory.port=465"
...しかし、これらのロギング関連の引数のいくつかを .properties ファイルにグループ化すると便利です。誰もこれを行う方法を知っていますか?
前もって感謝します!
これは少し奇妙な要求ですが、log4j.properties ファイルにいくつかの jvmargs を設定しようとしています。現在、たとえば、いくつかの引数を設定するためにantを使用しています....
jvmarg value="-Dmail.smtp.socketFactory.port=465"
...しかし、これらのロギング関連の引数のいくつかを .properties ファイルにグループ化すると便利です。誰もこれを行う方法を知っていますか?
前もって感謝します!
Log4j は、JVM がすでに開始された後にのみプロパティ ファイルを読み取ります。つまり、JVM 引数に影響を与えることはできません。
プロパティを 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 プロパティによって定義されているだけです。
あなたの例があなたの実際の状況からのものである場合、この値をプログラムで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 でも機能するはずです。