Logbackで設定ファイルが意図したとおりに読み込まれないという現象に遭遇したので、改めてまとめる。

読み込み順序

優先順位の高いものから順に読み込まれる。上位の条件にヒットした場合は、次の条件へは進まない。

  1. クラスパスから logback.groovy を検索する。
  2. クラスパスから logback-test.xml を検索する。
  3. クラスパスから logback.xml を検索する。
  4. JVMが ServiceLoader (JDK 6 and above) を実行している場合、ServiceLoaderは、インターフェース com.qos.logback.classic.spi.Configurator の実装のうち、最初に発見されたものを使用する。
  5. 以上がいずれも存在しなかった場合、 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