Logbackで設定ファイルを読み込む
Logbackで設定ファイルが意図したとおりに読み込まれないという現象に遭遇したので、改めてまとめる。
読み込み順序
優先順位の高いものから順に読み込まれる。上位の条件にヒットした場合は、次の条件へは進まない。
- クラスパスから
logback.groovy
を検索する。 - クラスパスから
logback-test.xml
を検索する。 - クラスパスから
logback.xml
を検索する。 - JVMが
ServiceLoader
(JDK 6 and above) を実行している場合、ServiceLoaderは、インターフェースcom.qos.logback.classic.spi.Configurator
の実装のうち、最初に発見されたものを使用する。 - 以上がいずれも存在しなかった場合、
BasicConfigurator
を使用する。
クラスパスは、起動オプション -classpath
(推奨)または環境変数 ${CLASSPATH}
で指定する。クラスパスで指定したディレクトリ直下のみを読み込む。
BasicConfigrator
を使用する場合、ログの出力先は標準出力に向けられる。
参考: 公式
xmlファイルをjarに含めない場合
設定が変わるたびに毎度ビルドするのは面倒なので、起動オプションで指定する方法。
あらかじめjarファイルの生成時にlogback.xmlを除外したうえで、以下のオプションを指定しつつ起動すればよい。
-Dlogback.configurationFile=./logback.xml
controlling logback configuration in standalone app
Exclude logback.xml in Jar file
comments powered by Disqus