はじめに
DomaはJavaの標準ライブラリ以外に依存しないことをコンセプトに謳っているので、デフォルトのログライブラリとしてJUL(java.util.logging)を使っています。ただ残念なことにJULは使いにくいということでとても不人気ですね。
この記事では、ログライブラリをJULからSLF4Jに切り替える方法を説明します。
Domaのバージョンは現時点で最新の2.44.3を想定して説明します。
Domaの他の機能については、Doma入門もお読みください。
Domaのログの仕組み
Domaの実行時のログ出力は、org.seasar.doma.jdbc.JdbcLogger
インタフェースを介して行われます。
doma-core.jarには、org.seasar.doma.jdbc.UtilLoggingJdbcLogger
というJULを利用する実装クラスが含まれており、Domaを単体で利用する場合はこのUtilLoggingJdbcLogger
が使われます。
他のログライブラリを使うには、別の既存実装を利用するか自前で独自実装を作成する必要があります。
DomaのSLF4J対応
doma-slf4j.jarに、SLF4Jを使うorg.seasar.doma.jdbc.Slf4jJdbcLogger
という実装クラスがあります。JULからSLF4Jに切り替えるにはUtilLoggingJdbcLogger
の代わりにSlf4jJdbcLogger
を使うようにすればOKです。
これら2つの実装クラスの違いですが、利用するログライブラリが異なることに加えてデフォルトのログレベルが異なります。UtilLoggingJdbcLogger
経由で出力されるデフォルトのログレベルはINFOですが、Slf4jJdbcLogger
のデフォルトのログレベルはDEBUGとなっています。
Slf4jJdbcLogger
を使うにはMavenやGradleではdoma-core.jarと同じバージョンのdoma-slf4j.jarへの依存が必要です。SLF4Jにバインディングさせて他のログライブラリ(logbackなど)を使う場合は、そちらの依存設定も忘れずに。
利用例はgetting-startedを参照ください。
Spring Bootを使う場合
Spring Bootを使っている場合でも、Slf4jJdbcLogger
を使えさえすればログライブラリをSLF4Jに切り替えられます。
doma-spring-boot 1.5.0以上使っている場合、この切り替えはとても簡単でapplication.propertiesに下記のように記載するだけです。
doma.jdbc-logger=SLF4J
なお、ログが出力されるようにするには、doma-spring-bootの利用の有無にかかわらず、Spring Bootのお作法にしたがって下記のようにログカテゴリの指定をしてください。
logging.level.org.seasar.doma=DEBUG
Quarkusを使う場合
Doma向けのQuarkusのExtensionであるquarkiverse-domaを使うのが簡単です。
このライブラリはデフォルトでSLF4Jを使います。
ログ出力をするには、Quarkusのお作法にしたがって次のように記載するだけです。
quarkus.log.category."org.seasar.doma".level=DEBUG
おわりに
DomaでログライブラリをSLF4Jに切り替える方法を説明しました。
SLF4J向けの実装を作ったのはつい最近(Doma 2.43.0から)ですが、もっと前から対応してもよかったですね。
ところで、最近ZulipというチャットサービスにDoma専用のルームを開設しました。もしDomaに関して質問などあればこのチャットルームでお気軽にどうぞ。