somoly.tistory.com
Published 2023. 6. 26. 23:01
kotlin logger Kotlin

kotlin 에서 slf4j logger 를 이용할 경우 불편한 점이 있어 LoggerDelegate 를 이용하여 사용하는 전략을 사용하고 있습니다.

class LoggerDelegate : ReadOnlyProperty<Any, Logger> {
    private lateinit var logger: Logger
    override fun getValue(thisRef: Any, property: KProperty<*>): Logger {
        if (!::logger.isInitialized) {
            logger = LoggerFactory.getLogger(thisRef.javaClass.name.substringBefore("\$Companion"))
        }
        return logger
    }
}

val loggerK: ReadOnlyProperty<Any, Logger> get() = LoggerDelegate()

 

사용 예제

// 사용방법 (1)
class GreetingService {
    private val log by loggerK
    
    fun hello() {
    	log.info("hello")
    }
}

// 사용방법 (2)
class GreetingService {
    companion object {
        private val logger by loggerK
    }
    
    fun hello() {
    	log.info("hello")
    }
}

'Kotlin' 카테고리의 다른 글

Kotlin Coroutine 개념  (0) 2023.10.05
kotlin euc-kr to utf-8 conversion  (0) 2023.09.09
Apache POI sheet.autoSizeColumn() Speed Up  (0) 2023.08.08
Kotlin Collections overview  (0) 2023.03.26
profile

somoly.tistory.com

@RxCats

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!