[Kotlin] @Slf4j를 대체해서 사용할 방법은?

찾게된 이유?

Java + Spring Boot로 개발하다보면 DTO, VO등의 Getter, Setter 작업등을 애노테이션을 근간으로 설정해주는 라이브러리인 Lombok을 사용한다.
그치만 아직 Kotlin에선 Lombok 컴파일러 플러그인의 대해 정상 작동을 보증하지 않는다.

그렇다면 로그를 위한 애노테이션인 @Slf4j를 사용하지 못하는 아쉬움이 존재한다.

본론부터 들어가자

	inline fun <reified T> logger() : Logger = LoggerFactory.getLogger(T::class.java)
    
@Component
class CustomFilter : AbstractGatewayFilterFactory<Any?>() {
	val log = logger<CustomFilter>()
    
    override fun apply(config : Any?) : GatewayFilter {
    	return GatewayFilter { exchange, filter -> 
        	val request = exchange.request
            val response = exchange.response
            log.info("Custom PRE Filter : request id -> ${request.id}")
            chain
            	.filter(exchange)
                .then(Mono.fromRunnable {
                	log.info("Custom POST Filter : response code -> ${response.statusCode}")
                })
        
        }
    }
}

모르는 것들

참조한 문서들

Kotlin : Lombok Compiler Plugin
Reddit : Slf4j loggers in 3 ways

좋은 웹페이지 즐겨찾기