SLF4J
Simple Logging Facade for Java
로깅 인터페이스를 제공한다. (구현체 예: java.util.logging, logback, log4k)
클라이언트는 SLF4J 추상화에 의존하면 실제 구현체를 몰라도 된다. (DIP)
스프링부트 web은 default로 logback를 쓴다.
" logging.level" 프로퍼티들을 통해 로깅 수준을 정할 수 있고, "classpath:logback.xml" 파일을 통해 구성을 할 수 있다.
롬복을 쓴다면 `@Slf4j`를 사용해 Logger 객체를 생성할 수 있다.
@Slf4j
public class someClass {
public void someMethod() {
log.info("test");
}
}
위 코드는 아래와 같이 해석된다.
public class SomeClass {
private static final logger = LoggerFactory.getLogger(SomeClass.class);
}
코틀린으로 작성한다면? 아래 방법들이 있다.
팩터리 메서드 사용
import org.slf4j.LoggerFactory
inline fun <reified T> T.logger() = LoggerFactory.getLogger(T::class.java)!!
class SomeClass {
val logger = logger()
fun someMethod() {
logger.info("test")
}
}
추상클래스 사용
import org.slf4j.Logger
import org.slf4j.LoggerFactory
abstract class Logging {
val logger : Logger = LoggerFactory.getLogger(this.javaClass)
}
class SomeClass {
companion object : Logging()
fun someMethod() {
logger.info("test")
}
}
인터페이스 사용
import org.slf4j.Logger
import org.slf4j.LoggerFactory
interface Logging {
val logger : Logger get() = LoggerFactory.getLogger(this.javaClass)
}
class SomeClass {
companion object : Logging
fun someMethod() {
logger.info("test")
}
}
이 방식은 로깅을 찍을 때마다 get()이 호출되고 LoggerFactory.getLogger()가 호출되기 때문에 사용하지 않을 것 같다.
'Kotlin' 카테고리의 다른 글
Kotest로 테스트 코드 작성하기 (3) | 2024.09.09 |
---|---|
Kotlin으로 JPA Entity 정의하기 (0) | 2024.09.04 |
Kotlin과 Java 함께 사용하기 (1) | 2022.10.08 |
Kotlin 문법 - 표준 라이브러리편 (0) | 2022.10.08 |
Kotlin 문법 - 중수편 (1) | 2022.10.03 |