[kotlin] 코틀린 웹 서버에서 로깅 데이터 저장 방법

웹 서버를 운영하다 보면, 사용자 요청 및 응답에 대한 로깅 데이터를 저장해야 할 때가 있습니다. 이를 통해 서버 운영 상태를 모니터링하고 디버깅에 도움을 주는데요. 이번 블로그 포스트에서는 코틀린 웹 서버에서 로깅 데이터를 저장하는 방법에 대해 알아보겠습니다.

로깅 라이브러리 선택

코틀린에서는 다양한 로깅 라이브러리를 사용할 수 있습니다. 가장 인기 있는 로깅 라이브러리 중 하나인 “Logback”을 예시로 살펴보겠습니다. Logback은 성능과 유연성 면에서 우수한 선택지입니다.

Gradle 빌드 파일에 다음 dependency를 추가하여 Logback을 사용할 수 있습니다.

dependencies {
    implementation 'ch.qos.logback:logback-classic:1.2.3'
}

로그 설정 파일 작성

Logback을 사용하기 위해선 로그 설정 파일을 작성해야 합니다. resources 폴더에 logback.xml 파일을 생성하고 다음과 같이 작성해보세요.

<configuration>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%level] %logger{36}.%M - %msg%n</pattern>
        </encoder>
    </appender>
    
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>logs/application.log</file>
        <encoder>
            <pattern>%date [%level] %logger{36}.%M - %msg%n</pattern>
        </encoder>
    </appender>
    
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
</configuration>

위 설정 파일은 로그를 콘솔과 파일에 출력하도록 구성되어 있습니다. 파일명은 logs/application.log로 지정되어 있습니다.

로깅 코드 작성

이제 로깅 코드를 작성해봅시다. 예를 들어, HTTP GET 요청이 발생할 때마다 “GET 요청이 발생했습니다”라는 로그를 남기고 싶다고 가정해봅시다.

import org.slf4j.LoggerFactory

val logger = LoggerFactory.getLogger("application")

fun handleGetRequest() {
    logger.info("GET 요청이 발생했습니다")
}

get 요청이 발생하면 handleGetRequest 함수를 호출하여 해당 로그를 기록합니다.

결과 확인

서버를 실행하고 handleGetRequest 함수를 호출하면 로그가 콘솔에 출력되고 logs/application.log 파일에도 로그가 저장됩니다. 이제 서버 운영 상태를 모니터링하거나 디버깅할 때 로그를 살펴볼 수 있습니다.

마무리

이번 포스트에서는 코틀린 웹 서버에서 로깅 데이터를 저장하는 방법에 대해 알아보았습니다. Logback을 사용하여 로그를 설정하고 관리하는 방법을 살펴봤는데요. 로깅은 서버 운영에 필수적인 요소이므로 적절한 로깅 작업을 수행하여 서버를 효율적으로 관리하시기 바랍니다.