source

kotlin slf4j를 사용하여 기록하는 가장 좋은 방법

ittop 2023. 7. 21. 21:55
반응형

kotlin slf4j를 사용하여 기록하는 가장 좋은 방법

로그백을 사용한 기본 로그 구성의 스프링 부트 프로젝트가 있습니다.저는 항상 애플리케이션 내부의 로깅 목적으로 이 접근 방식을 사용해 왔습니다.

logger.info("Get user paginated: filter {}",user)

지금 저는 코틀린을 배우고 있으며 String 템플릿에 대해 읽고 있었습니다.$를 사용하여 문장을 다시 쓴다면 다음과 같습니다.

logger.info("Get user paginated: filter $user")

Spring boot로 Kotlin에 로그인하는 방법은 무엇입니까?

더 나은 방법은 둘 다 아닙니다; https://github.com/MicroUtils/kotlin-logging 을 추가하고 글을 쓰십시오.

logger.info { "Get user paginated: filter $user" }

양쪽 모두의 이점을 가지고

의 요점.{}SLF4J가 지원하는 구문은 로그 메시지가 실제로 생성되지 않는 경우(예: 레벨이 정보보다 높기 때문에) 쓸모없는 String 연결 및 toString() 호출을 방지하는 것입니다.

템플릿 문자열은 이를 피하지 않습니다.user.toString()메서드를 호출하고 로그 메시지의 정적 부분에 결과를 추가해야 합니다.logger.info().

따라서 최고의 성능을 원하는 경우 SL4J 매개 변수를 사용하십시오.상관하지 않고 템플릿 문자열이 더 읽기 쉬운 경우 템플릿 문자열을 사용합니다.

Slf4j-template를 사용하지 않으려면{}그리고 추가적인 의존성을 추가하고 싶지 않다면, 코틀린 스타일을 효율적으로 지원하기 위해 프로젝트에 의 간단한 코틀린-slf4j-dll을 추가할 수 있습니다.

private val log = LoggerFactory.getLogger(this.javaClass)

fun log() {
    log.trace { "trace message" }
    log.debug { "debug message" }
    log.info { "info  message" }
    log.warn { "warn  message" }
    log.error { "error message" }
    log.error(IllegalStateException("throwable message")) { "exception" }
}

Slf4k는 코틀린 확장을 사용하지 않는 대체 구현입니다.

val log = Slf4k.getLogger {}
private val logger = LoggerFactory.getLogger(this::class.java)
fun testing() {
      logger.info(ctx.toString())
      logger.error(err.message)
}

언급URL : https://stackoverflow.com/questions/57728079/kotlin-best-way-to-log-using-slf4j

반응형