Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

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

はじめに

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に関して質問などあればこのチャットルームでお気軽にどうぞ。

参考情報

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?