[kotlin] Ktor Core의 로깅 및 모니터링

Ktor는 인기 있는 Kotlin 기반 웹 프레임워크로, 로깅모니터링을 위한 강력한 도구를 제공합니다. 이 글에서는 Ktor Core에서 로깅과 모니터링을 어떻게 설정하고 사용하는지에 대해 알아보겠습니다.

로깅 설정

Ktor는 기본적으로 SLF4J(Logback)를 사용하여 로그를 기록합니다. 따라서 먼저 build.gradle 파일에 필요한 의존성을 추가해야 합니다.

dependencies {
    implementation "io.ktor:ktor-server-core:$ktor_version"
    implementation "ch.qos.logback:logback-classic:$logback_version"
}

그런 다음, 로깅을 구성하고 적절한 로깅 수준을 설정하기 위해 logback.xml 파일을 프로젝트에 추가합니다.

<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>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

이제 Ktor 애플리케이션에서 로깅이 설정되었고, 서버가 시작되고 작업이 수행될 때 로그를 기록할 준비가 되었습니다.

모니터링

Ktor는 내장된 monitor 기능을 통해 간단한 모니터링을 제공합니다. 다음은 모니터링을 실행하는 간단한 예제입니다.

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
    install(MicrometerMetrics) {
        registry = prometheusMeterRegistry
    }

    routing {
        get("/health") {
            call.respondText("OK", ContentType.Text.Html)
        }
    }
}

위 예제는 MicrometerMetricsPrometheus를 사용하여 애플리케이션의 간단한 모니터링을 활성화합니다. /health 엔드포인트를 통해 애플리케이션의 상태를 모니터링할 수 있습니다.

결론

Ktor Core를 사용하여 강력한 로깅 및 모니터링 기능을 손쉽게 구현할 수 있습니다. 로그 레벨을 조정하거나 원하는 형식으로 로그를 포맷하는 등 다양한 방법으로 로깅을 활용할 수 있습니다. 또한 내장된 모니터링 기능을 통해 애플리케이션의 상태를 실시간으로 관찰하고 모니터링할 수 있습니다.

Ktor 공식 문서 및 GitHub 레포지토리에서 자세한 정보를 확인할 수 있습니다.