Commons Loggingで利用するログ実装の指定

Commons Loggingで利用する実装を指定は、クラスパス上に作成したcommons-logging.propertiesファイルに行います。


commons-logging.properties(Log4jの場合)

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

<指定可能な実装>

  • org.apache.commons.logging.impl.Jdk14Logger(JDK1.4 Log)
  • org.apache.commons.logging.impl.Log4JLogger(Log4J
  • org.apache.commons.logging.impl.LogKitLogger(avalon-Logkit)
  • org.apache.commons.logging.impl.SimpleLog(common-loggingのデフォルト実装)
  • org.apache.commons.logging.impl.NoOpLog(ログ出力しない)


正確にはCommons Loggingの実装は、内部的に以下の順序で決定されます。

  1. org.apache.commons.logging.LogFactory という名称のシステムプロパティをチェックします。
  2. JDK 1.3 の JARファイル仕様のサービスプロバイダの機能 (詳細は http://java.sun.com/j2se/1.3/ja/docs/ja/guide/jar/jar.html を参照して下さい) を使用して META-INF/services/org.apache.commons.logging.LogFactory という名称のリソースを検索し、最初にみつかった行に含まれるクラス名を実装クラス名とみなします。
  3. アプリケーション内で有効なクラスパスから commons-logging.properties という名称のプロパティファイルを検索し org.apache.commons.logging.LogFactory という名称のプロパティの値を実装クラス名とします。
  4. それ以外の場合は後の章で説明されるデフォルトの(ファクトリ)実装を使います。

org.apache.commons.loggingのJavaDocより。
※org.apache.commons.logging.LogFactoryは、org.apache.commons.logging.Logの間違いだと思われます。


なお、システムプロパティを指定する場合には、以下のVM引数を指定します。

-Dorg.apache.commons.logging.Log



参考