KLogging, KLogger, KotlinLogging

//
import mu.KLogging

class MyClass {
    companion object : KLogging()
    
    fun doSomething() {
        logger.info { "This is a log message from MyClass" }
    }
}

//
import mu.KLogger
import mu.KotlinLogging

class MyClass {
    private val logger: KLogger = KotlinLogging.logger {}

    fun doSomething() {
        logger.info { "This is a log message from MyClass" }
    }
}

//
import mu.KotlinLogging

private val logger = KotlinLogging.logger {}

fun main() {
    logger.info { "This is a log message from main function" }
}


KLoggingKLoggerKotlinLogging
설명클래스 레벨 로깅을 위한 싱글톤로거 인터페이스KLogger 객체를 생성하는 유틸
사용 방식companion object : KLogging()val logger: KLogger = KotlinLogging.logger {}val logger = KotlinLogging.logger {}
주요 차이점logger 변수를 자동으로 제공인터페이스로 직접 사용해야 함KLogger 객체를 쉽게 생성하는 유틸


언제 어떤 걸 써야 할까?

  • 클래스에서 로깅을 사용할 때:
    → companion object : KLogging() 사용 (편리함)
  • 로깅을 수동으로 관리하고 싶을 때:
    → KLogger를 직접 생성하여 사용
  • 파일 내에서 전역적으로 로깅을 사용할 때:
    → val logger = KotlinLogging.logger {} 사용

Kotlin에서는 자바와 달리 @Slf4j를 사용하지 않는 이유

  • Lombok이 Kotlin과 완벽하게 맞지 않음
  • Kotlin의 object와 companion object로 싱글턴 패턴을 쉽게 구현 가능
  • KotlinLogging은 성능 최적화(람다 방식) 지원
  • 설정이 필요 없고 더 깔끔한 코드 가능



Reference

https://github.com/klogging/klogging
https://oimbook.tistory.com/entry/Kotlin-%EB%8B%B5%EA%B2%8C-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EB%A1%9C%EA%B9%85%ED%95%B4%EB%B3%B4%EA%B8%B0
https://lannstark.tistory.com/141

profile
하루에 한 개념씩

0개의 댓글

Powered by GraphCDN, the GraphQL CDN