Skip to content

Commit

Permalink
Introduce the LoggerFacade interface
Browse files Browse the repository at this point in the history
  • Loading branch information
nakamura-to committed Dec 12, 2021
1 parent e07e10a commit 0f7e825
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
14 changes: 13 additions & 1 deletion content/ja/docs/Reference/database-config.md
Expand Up @@ -69,7 +69,6 @@ suppressLogging
### logger

ロガーです。
実行されるSQLやトランザクションに関するログを出力します。

デフォルトでは、サービスローダーでファクトリを取得しファクトリから利用すべきロガーを生成します。
サービスローダーでファクトリを取得できない場合、出力先を標準出力とするロガーを返します。
Expand All @@ -82,6 +81,19 @@ suppressLogging

- [Logging]({{< relref "logging.md" >}})

### loggerFacade

ロガーのファサードです。

実行されるSQLやトランザクションに関するログ出力指示を受け付け、ログメッセージをフォーマットし、ロガーへ送ります。
Komapperから出力されるログはすべてこのファサードを経由します。

ログメッセージやログレベルを変更するには、ファサードの実装を切り替えてください。

以下のドキュメントも参照ください。

- [Logging]({{< relref "logging.md" >}})

### statementInspector

`org.komapper.core.Statement`のインスペクターです。
Expand Down
35 changes: 33 additions & 2 deletions content/ja/docs/Reference/logging.md
Expand Up @@ -53,6 +53,37 @@ The transaction "83d5c2e5-8d3b-4a45-a5bb-215f846a0327" has committed.
このカテゴリは他のどのカテゴリにも属さないログを表します。
デフォルトでは利用されていません。

## LoggerFacadeの利用例 {#loggerfacade}

LoggerFacadeを使えば、ログメッセージやログレベルの変更ができます。

### SQLのログレベルを変更する場合の設定例 {#loggerfacade-loglevel-example}

例えば、SQLのログレベルをDEBUGからINFOに変更したい場合は、以下のような実装を作成します。

```kotlin
class MyLoggerFacade(private val logger: Logger): LoggerFacade by DefaultLoggerFacade(logger) {
override fun sql(statement: Statement, format: (Int, StatementPart.PlaceHolder) -> CharSequence) {
logger.info(LogCategory.SQL.value) {
statement.toSql(format)
}
}
}
```

上記の実装クラスを`JdbcDatabaseConfig`に設定するには次のように記述します。

```kotlin
val dataSource: DataSource = ..
val dialect: JdbcDialect = ..
val config: JdbcDatabaseConfig = object: DefaultJdbcDatabaseConfig(dataSource, dialect) {
override val loggerFacade: LoggerFacade by {
MyLoggerFacade(logger)
}
}
val db = JdbcDatabase.create(config)
```

## SLF4Jの利用 {#slf4j}

[SLF4J](http://www.slf4j.org/) を利用してログ出力するにはkomapper-slf4jモジュールをGradleの依存関係の宣言に含めます。
Expand Down Expand Up @@ -81,7 +112,7 @@ Komapperが提供する各種starterモジュールはSLF4JとLogbackの設定
starterモジュールを使う場合、上記の設定は不要です。
{{< /alert >}}

### LogbackでSQLのログ出力をする場合の設定例 {#logback-example}
### LogbackでSQLのログ出力をする場合の設定例 {#slf4j-logback-example}

次のようなlogback.xmlをsrc/main/resourcesの下に配置すると、バインド変数`?`が含まれた形式のSQLがコンソールに出力されます。

Expand Down Expand Up @@ -117,4 +148,4 @@ starterモジュールを使う場合、上記の設定は不要です。
<appender-ref ref="STDOUT" />
</root>
</configuration>
```
```

0 comments on commit 0f7e825

Please sign in to comment.