Server Plugin
调用日志
必需的依赖项: io.ktor:ktor-server-call-logging
代码示例: logging
原生服务器支持: ✖️ Ktor 支持 Kotlin/Native 并允许你运行服务器而无需额外的运行时或虚拟机。
Ktor 提供了使用 SLF4J 库记录应用程序事件的能力。你可以从 Ktor 服务器中的日志记录 主题了解通用日志配置。
CallLogging 插件允许你记录传入的客户端请求。
添加依赖项
要使用 CallLogging,你需要将 ktor-server-call-logging artifact 包含到构建脚本中:
Kotlin
Groovy
XML
安装 CallLogging
要将 CallLogging 插件安装到应用程序,请在指定的
模块
中将其传递给 模块允许你通过分组路由来组织应用程序。
install 函数。下面的代码片段展示了如何安装 CallLogging ... - ... 在
embeddedServer函数调用内部。 - ... 在显式定义的
module内部,该module是Application类的扩展函数。
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")