spring에서 Slf4j logger 사용

mohadang·2024년 1월 14일
0

Road to Backend

목록 보기
21/21
post-thumbnail

LoggerFactory 생성하여 사용

LoggerFactory로 생성하고 직접 클래스 지정

@Component
class MyLogTester {
    private val log = LoggerFactory.getLogger(MyLogTester::class.java)
    fun log() {
        log.info("Test Log")
    }
}

2024-01-14T13:31:27.447+09:00 INFO 10908 --- [ main] c.example.ktorsamplespring.MyLogTester : Test Log

개선 1 : 범용적 class 이름 지정

@Component
class MyLogTester {
    private val log = LoggerFactory.getLogger(this.javaClass)
    ...
}

개선 2A : 팩토리메소드 사용하여 생성

inline fun<reified T> T.logger() = 
    LoggerFactory.getLogger(T::class.java)

@Component
class MyLogTester {
    private val log = logger()
    ...
}

개선 2B : 위임 방식 사용

class LoggerDelegator {
    private var logger: Logger? = null
    operator fun getValue(thisRef: Any?, property: Any?): Logger =
        logger ?: LoggerFactory.getLogger(thisRef?.javaClass)
}

@Component
class MyLogTester {
    private val log by LoggerDelegator()
    ...
}

개선 2C : KotlinLogging 사용

gradle

implementation 'io.github.microutils:kotlin-logging:3.0.5'
import mu.KotlinLogging
import org.springframework.stereotype.Component

@Component
class MyLogTester {
    private val log = KotlinLogging.logger {}
    ...
}
profile
mohadang

0개의 댓글