본문 바로가기
kotlin

[kotlin-tip] 코프링 환경에서 로깅하기

by 권성호 2023. 1. 14.

사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다.

 

자프링 환경에서 로깅을 위해 대표적으로 SLF4J를 사용하는데, lombok 어노테이션 중 @Slf4j를 사용하면 편리하게 로깅 관련 코드를 작성할 수 있다.

하지만 코틀린에서는 lombok 사용은 지양하고 있는 것 같다.

그렇다면, 코프링 환경에서 로깅은 어떤 형태로 구현할 수 있을까?

 

아래 링크에 설명이 잘 나와 있다

https://blog.leocat.kr/notes/2021/11/04/kotlin-logging-in-kotlin

 

[Kotlin] Kotlin 코드에서 로깅 (kotlin-logging)

Lombok을 쓰지 못 하는 Kotlin 코드에서 가장 불편했던건 @Slf4j annotation을 쓰지 못 하는 것이었다. 다른 것들은 대체제가 많은데, 이 annotation은 너무 편해서 중독성이 상당했고 그만큼 쓰지 못 하는게

blog.leocat.kr

기존 자프링의 @Slf4j 방식은 로깅을 위해 메서드 파라미터로 직접 값을 넘겨주는 방식이었다.

따라서 잘못 작성될 시 로깅 레벨에 따라 불필요하게 문자열 연산이 반복될 수 있고, 불필요한 if 문이 들어가 코드의 가독성을 해칠 수 있었다.

 

kotlin-logging 은 람다를 사용하여 코드의 간결성과 효율성을 둘 다 챙겼다.

아래와 같이 람다를 넘기도록 작성하면

val logger = KotlinLogging.logger {}

@Test
fun contextLoads() {
    logger.info {"테스트"}
}

내부적으로 로깅 레벨을 확인 후 필요할 때만 메서드를 호출해 준다

override fun info(msg: () -> Any?) {
    if (isInfoEnabled) info(msg.toStringSafe())
}

 

댓글