SLF4J + Logback への完全移行

以前SLF4J に依存したライブラリの追加により SLF4J を導入したが、今回そこからさらに進めて完全に SLF4J + LogBack に移行し、Commons Logging と Log4J への依存を完全になくした。

以前の対応では、以下の2つの構成が混在していた。

  • Commons Logging - Log4J
  • SLF4J(slf4j-api.jar) - (slf4j-log4j12) - Log4J


ここからまず Commons Logging 実装を排除したいが、当然 Commons Logging API を利用しているライブラリは残っているので、Commons Logging API から SLF4J に変換するライブラリ(jcl-over-slf4j.jar)を導入する。これを導入するには commons-logging.jar は削除しなければいけない。maven を使っていると依存ライブラリとして勝手に読み込まれてしまうので、以下のように明示的に除外する必要がある。

		
			commons-httpclient
			commons-httpclient
			3.1
			
				
					commons-logging
					commons-logging
				
			
		

次にログ実装の置き換え。LogBack本体 (logback-core.jar) と LogBack 用のブリッジ (logback-classic.jar) を導入し、前回導入した Log4J ブリッジは削除した。maven なら、logback-classic だけ追加すれば勝手に logback-core も読み込まれる。

あとは Logback の設定ファイル(logback.xml)の準備。Log4J からの移行であれば、ウェブ上で設定ファイルの変換ができる。いたれりつくせりだ。

これで完全に移行ができ、以下の構成になった。


なお、SLF4J には紛らわしい名前のライブラリがあるので注意が必要だ。

  • jcl-over-slf4j.jar Commons Logging API を用いて SLF4J を利用するためのもの
  • slf4j-jcl.jar SLF4J から呼び出されるログ実装として、処理をさらに Commons Logging に移譲するもの


Log4J にも同じようなものがある。

  • log4j-over-slf4j.jar Log4J API を用いて SLF4J を利用するためもの
  • slf4j-log4j12.jar SLF4J から呼び出されるログ実装として Log4J を利用するためのもの