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 |