LoginSignup
3
5

More than 3 years have passed since last update.

Doma入門 - ログライブラリにSLF4Jを使う

Last updated at Posted at 2020-11-20

はじめに

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に下記のように記載するだけです。

application.prpoperties
doma.jdbc-logger=SLF4J

なお、ログが出力されるようにするには、doma-spring-bootの利用の有無にかかわらず、Spring Bootのお作法にしたがって下記のようにログカテゴリの指定をしてください。

application.prpoperties
logging.level.org.seasar.doma=DEBUG

Quarkusを使う場合

Doma向けのQuarkusのExtensionであるquarkiverse-domaを使うのが簡単です。
このライブラリはデフォルトでSLF4Jを使います。

ログ出力をするには、Quarkusのお作法にしたがって次のように記載するだけです。

application.prpoperties
quarkus.log.category."org.seasar.doma".level=DEBUG

おわりに

DomaでログライブラリをSLF4Jに切り替える方法を説明しました。

SLF4J向けの実装を作ったのはつい最近(Doma 2.43.0から)ですが、もっと前から対応してもよかったですね。

ところで、最近ZulipというチャットサービスにDoma専用のルームを開設しました。もしDomaに関して質問などあればこのチャットルームでお気軽にどうぞ。

参考情報

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5