Kotlin의 모든 클래스에서 logger 객체를 편하게 얻을 수 있는 방법
- IT/PROGRAMMING
- 2021. 8. 18. 00:46
250x250
반응형
안녕하세요, 하마연구소 입니다.
Java에서 프로그래밍 할 때 편의를 위하여 Lombok을 거의 필수로 이용합니다.
보통 클래스변수의 getter()와 setter()를 자동으로 생성해주는 @Data 어노테이션을 붙이는 것을 많이 사용합니다.
그리고 @Log, @Slf4j 등 logger 객체를 쉽게 얻을 수 있는 기능을 제공하는데, 꽤 유용합니다.
코드가 많이 간단해집니다.
Kotlin으로 프로그래밍하면서 이와 같은 logger 객체를 쉽게 얻어주는 라이브러리를 찾아보았지만, 찾지 못했습니다.
최근 Kotlin 버전에서는 Lombok을 공식적으로 사용할 수 있게 되었습니다. (https://kotlinlang.org/docs/lombok.html)
하지만 아직(현재버전 1.5.21) @Log, @Log4j2, @Slf4j 등의 어노테이션은 지원을 하지 않습니다.
아래는 순수하게 Kotlin 코딩으로 간단하게 logger 객체를 얻을 수 있는 방법입니다.
Inline function으로 모든 객체에서 접근가능하도록 정의하였고, reified 키워드를 사용하여 런타임시에도 해당 객체에서 generic type에 접근할 수 있도록 하였습니다.
import org.slf4j.Logger
import org.slf4j.LoggerFactory
/**
* 모든 Kotlin 클래스에서 SLF4J의 Logger 객체를 얻을 수 있다.
*/
inline fun <reified T> T.logger(): Logger {
return LoggerFactory.getLogger(T::class.java)
}
Log4j2 객체가 필요하다면 function의 반환값과 구현부분을 살짝 변경하면 되겠죠?
혹시 이 방법말고 또다른 기똥찬 방법 알고 계시면 답글 부탁드립니다.
반응형
'IT > PROGRAMMING' 카테고리의 다른 글
Kotlin 2.0.0, 공식 릴리즈 되었군요. (0) | 2024.05.21 |
---|---|
Java로 HTML 처리는 jsoup이 짱이네요. (0) | 2024.05.21 |
[Spring] spring-boot 2.1(SpringFramework 5.1)에서 없어진 기능, JSONP 간단하게 구현하기 (0) | 2019.06.09 |
[Spring] spring-vault에서 @VaultPropertySource 여러개 사용하면 안되는 이유 (1) | 2019.04.19 |
YouTube(유튜브) 동영상의 썸네일 이미지 추출하는 방법 (0) | 2019.04.09 |