logbackでJavaシステムプロパティを利用する

logbackJavaシステムプロパティを参照するには、「${propname}」といった表記を使用する。同様の表記で環境変数も参照できる。

コマンドライン

java -Dlog.home=/path/to/log ClassName

logback.xml

<property name="LOG_HOME" value="${log.home}" />

なお、Javaシステムプロパティが存在しなかった場合、「propname_IS_UNDEFINED」をいう値が設定される。

変数のデフォルト値設定

Javaシステムプロパティが設定されていなかった時のデフォルト値を定義するためには、「${propname:-defaultValue}」といった表記を使用する。

logback.xml

<property name="LOG_HOME" value="${log.home:-/default/log}" />


なお、デフォルト値を変数にする場合、${propname:-${defaultpropname}}のように書くらしいのだがデフォルト値の変数がうまく展開されない…