システムプロパティを変更して複数の環境で実行される単一の設定をしたいとします。以下はその例です:log4jプロパティのデフォルト値を指定するにはどうすればいいですか
log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log
しかし、誰かがシステムプロパティを設定することを忘れても、正しく機能することを確認したいと思います。プロパティファイルにデフォルト値を指定する方法はありますか?
システムプロパティを変更して複数の環境で実行される単一の設定をしたいとします。以下はその例です:log4jプロパティのデフォルト値を指定するにはどうすればいいですか
log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log
しかし、誰かがシステムプロパティを設定することを忘れても、正しく機能することを確認したいと思います。プロパティファイルにデフォルト値を指定する方法はありますか?
そうかもしれません。 org.apache.log4j.PropertyConfigurator
のAPIドキュメントによると、変数はまずシステムプロパティでその値を探し、そこに見つからなければ設定ファイルを検索する必要があります。
すべてのオプション値には、変数の置換が認められます。変数 の構文は、Unixシェルの構文に似ています。 "$ {"と "}"の間の文字列はキーとして解釈されます。 置換された変数の値は、システムプロパティとして、または 構成ファイル自体で定義できます。キーの値は最初に のシステムプロパティで検索され、そこに見つからない場合は、 で解析されます。対応する値は の$ {variableName}シーケンスを置き換えます。たとえば、java.homeシステム プロパティが/ home/xyzに設定されている場合、シーケンス $ {java.home}のすべての出現は/ home/xyzとして解釈されます。
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html
あなたは、設定ファイルで設定された変数はしかし、システムのプロパティをオーバーライドしますかどうかを確認する必要があります。