Skip to content
Server Plugin

コールロギング

必要な依存関係: io.ktor:ktor-server-call-logging

コード例: logging

ネイティブサーバー
KtorはKotlin/Nativeをサポートしており、追加のランタイムや仮想マシンなしでサーバーを実行できます。
のサポート: ✖️

Ktorは、SLF4Jライブラリを使用してアプリケーションイベントをログに記録する機能を提供します。一般的なロギング設定については、Ktorサーバーでのロギングのトピックを参照してください。

プラグインCallLoggingを使用すると、着信クライアントリクエストをログに記録できます。

依存関係を追加する

CallLoggingを使用するには、ktor-server-call-loggingアーティファクトをビルドスクリプトに含める必要があります。

Kotlin
Groovy
XML

CallLoggingをインストールする

アプリケーションにCallLoggingプラグインをインストールするには、指定された

モジュール
モジュールを使用すると、ルートをグループ化してアプリケーションを構造化できます。
内のinstall関数に渡します。以下のコードスニペットは、CallLoggingをインストールする方法を示しています...

  • ... embeddedServer関数呼び出し内。
  • ... Applicationクラスの拡張関数である明示的に定義されたmodule内。
kotlin
kotlin

ロギング設定を構成する

CallLoggingは、複数の方法で構成できます。ロギングレベルの指定、指定された条件に基づくリクエストのフィルタリング、ログメッセージのカスタマイズなどです。利用可能な構成設定は、CallLoggingConfigで確認できます。

ロギングレベルを設定する

デフォルトでは、KtorはLevel.INFOロギングレベルを使用します。これを変更するには、levelプロパティを使用します。

kotlin
install(CallLogging) {
    level = Level.INFO
}

ログリクエストをフィルタリングする

filterプロパティを使用すると、リクエストをフィルタリングするための条件を追加できます。以下の例では、/api/v1へのリクエストのみがログに記録されます。

kotlin
install(CallLogging) {
    filter { call ->
        call.request.path().startsWith("/api/v1")
    }
}

ログメッセージの形式をカスタマイズする

format関数を使用すると、リクエスト/レスポンスに関連する任意のデータをログに記録できます。以下の例は、各リクエストに対するレスポンスステータス、リクエストHTTPメソッド、およびUser-Agentヘッダー値をログに記録する方法を示しています。

kotlin
install(CallLogging) {
    format { call ->
        val status = call.response.status()
        val httpMethod = call.request.httpMethod.value
        val userAgent = call.request.headers["User-Agent"]
        "Status: $status, HTTP method: $httpMethod, User agent: $userAgent"
    }
}

完全な例は、loggingで確認できます。

コールパラメーターをMDCに配置する

CallLoggingプラグインはMDC(Mapped Diagnostic Context)をサポートしています。mdc関数を使用して、指定された名前で目的のコンテキスト値をMDCに配置できます。たとえば、以下のコードスニペットでは、nameクエリパラメーターがMDCに追加されます。

kotlin
install(CallLogging) {
    mdc("name-parameter") { call ->
        call.request.queryParameters["name"]
    }
}

ApplicationCallのライフタイム中に、追加された値にアクセスできます。

kotlin
import org.slf4j.MDC
// ...
MDC.get("name-parameter")