SLF4J サポート

概要

Doma は基礎となるロギングフレームワークとして java util ロギングを使用しますが、これを SLF4J に簡単に置き換えることができます。

Gradle

Doma は、SLF4J を適応させるための doma-slf4j アーティファクトを提供します。

dependencies {
    implementation("org.seasar.doma:doma-slf4j:2.57.0")
    // Use an arbitrary SLF4J binding
    runtimeOnly("ch.qos.logback:logback-classic:1.2.3")
}

設定

org.seasar.doma.slf4j.Slf4jJdbcLogger インスタンスを org.seasar.doma.jdbc.Config の実装クラスの getJdbcLogger メソッドから返してください。

Logger も参照してください。

ロガー

doma-slf4j は、次のようないくつかのロガーを提供します。

  • org.seasar.doma.jdbc.LogKind.DAO

  • org.seasar.doma.jdbc.LogKind.FAILURE

  • org.seasar.doma.jdbc.LogKind.LOCAL_TRANSACTION

  • org.seasar.doma.jdbc.LogKind.SKIP.STATE_UNCHANGED

  • org.seasar.doma.jdbc.LogKind.SKIP.BATCH_TARGET_NONEXISTENT

  • org.seasar.doma.jdbc.LogKind.SQL.BATCH_DELETE

  • org.seasar.doma.jdbc.LogKind.SQL.BATCH_INSERT

  • org.seasar.doma.jdbc.LogKind.SQL.BATCH_UPDATE

  • org.seasar.doma.jdbc.LogKind.SQL.DELETE

  • org.seasar.doma.jdbc.LogKind.SQL.FUNCTION

  • org.seasar.doma.jdbc.LogKind.SQL.INSERT

  • org.seasar.doma.jdbc.LogKind.SQL.PROCEDURE

  • org.seasar.doma.jdbc.LogKind.SQL.SCRIPT

  • org.seasar.doma.jdbc.LogKind.SQL.SELECT

  • org.seasar.doma.jdbc.LogKind.SQL.SQL_PROCESSOR

  • org.seasar.doma.jdbc.LogKind.SQL.UPDATE

詳細については、 ソース コード を参照してください。

以下に、logback の設定例を示します。

すべてログに記録する

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.seasar.doma.jdbc.LogKind" level="debug"/>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

すべての SQL ステートメントをログに記録する

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.seasar.doma.jdbc.LogKind.SQL" level="debug"/>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

SELECT ステートメントのみをログに記録する

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.seasar.doma.jdbc.LogKind.SQL.SELECT" level="debug"/>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>