Kotlin 로그 사용 방법 에 대한 자세 한 설명

4442 단어 kotlin로그
머리말
자바 를 배 운 사람 은@Slf4j 가 얼마나 편 하 게 사용 하 는 지 알 고 있 을 것 이다.

@Slf4j
public class TestController{
 @GetMapping("/test")
 public String test(){
  log.debug("debug");  
  return "test";
 }
}
그러나 불행 하 게 도 Kotlin 에 서 는 이러한 주해 가 없 었 습 니 다.따라서 본 고 는@Slf4j 주해 가 Kotlin 에서 사용 하 는 방법 과 100%Kotlin 으로 작 성 된 로그 라 이브 러 리 를 소개 합 니 다.
2.손 으로 쓰기@Slf4j
간단 합 니 다.먼저 코드 를 올 립 니 다.

import org.slf4j.Logger
import org.slf4j.LoggerFactory

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Slf4j{
 companion object{
  val <reified T> T.log: Logger
  inline get() = LoggerFactory.getLogger(T::class.java)
 }
}

한 줄 한 줄 설명 은 다음 과 같다.
  • @Target:자바 의@Target 과 유사 하고 주해 의 목표 입 니 다.여 기 는 클래스
  • 입 니 다.
  • @Retention:자바 의@Retention 과 유사 하 며,실행 시 보류
  • annotation class:설명 하나
  • companion object:동반 대상
  • valT.log:Logger:Logger 형식의 일반적인 대상 을 설명 합 니 다
  • inline get()=LoggerFactory.getLogger(T:class.java):getter 를 내 연 으로 성명 해 야 T 를 사용 할 수 있 습 니 다.그래 야 뒤의 getLogger 에 전달 할 수 있 습 니 다.T:class.java 는 자바 의 T.class,즉 getLogger(T:class.java)는 getLogger(SomeClass.class)에 해당 합 니 다.
  • 사용 은 간단 합 니 다:
    
    @RestController
    @Slf4j
    class TestController {
      @GetMapping("/test")
      fun test():String{
        log.warn("cc")
        return "test"
      }
    }
    
    직접 클래스 에 주 해 를 추가 하면 log.info/log.warn 같은 방법 을 사용 할 수 있 습 니 다.
    3 kotlin-logging
    주석 을 사용 하 는 방법 을 소개 하 였 으 며,주석 을 사용 하지 않 으 려 면 다른 사람의 라 이브 러 리 를 사용 할 수 있 습 니 다.예 를 들 어 kotlin-logging.
    kotlin-logging 은 100%Kotlin 으로 작 성 된 가 벼 운 패키지 slf4j 의 오픈 소스 로그 라 이브 러 리 입 니 다.1.4k 를 수확 한 star:

    다음 의존:
    
    <dependency>
      <groupId>io.github.microutils</groupId>
      <artifactId>kotlin-logging-jvm</artifactId>
      <version>2.0.6</version>
    </dependency>
    
    Gradle:
    
    implementation 'io.github.microutils:kotlin-logging-jvm:2.0.6'
    
    도입 시 대응 하 는 클래스 에 속성 을 만 들 면 됩 니 다:
    
    private val logger = KotlinLogging.logger {}
    
    사용 시,그 중의 info/debug/error 등 을 직접 호출 하면 됩 니 다.
    
    import mu.KotlinLogging
    private val logger = KotlinLogging.logger {} 
    class FooWithLogging {
      val message = "world"
      fun bar() {
        logger.debug { "hello $message" }
      }
    }
    
    4 양자 결합 사용
    물론 주석 과 kotlin-logging 을 결합 하여 사용 할 수도 있 습 니 다.먼저 필 자 는 Kotlin Logging 의 인 터 페 이 스 를 간단하게 보 았 습 니 다.

    세 가지 대외 적 인 logger 방법 을 제 공 했 는데 매개 변 수 는 다음 과 같다.
  • 함수
  • 문자열
  • org.slf4j.Logger
  • getLogger 와 유사 한 것 을 대외 적 으로 제공 하지 않 았 습 니 다(Classclazz)이러한 클래스 를 매개 변수 로 하 는 방법 은 범 형 을 통 해 구체 적 인 클래스 의 이름 을 얻 고 두 번 째 방법 으로 mu.KLogger 를 구성 해 야 합 니 다.
    
    import mu.KotlinLogging
    import org.slf4j.Logger
    
    @Target(AnnotationTarget.CLASS)
    @Retention(AnnotationRetention.RUNTIME)
    annotation class Slf4j{
      companion object{
        val <reified T> T.log: Logger
        inline get() = KotlinLogging.logger{T::class.java.name}
      }
    }
    
    
    사용 방법 과 함께@Slf4j 를 직접 추가 하면 사용 할 수 있 습 니 다.
    5 전체 데모 참조
  • Github
  • 암운
  • CODE.CHINA
  • 참고
    1、 kotlin-logging
    2、 Kotlin 홈 페이지-내 연 함수
    Kotlin 의 로그 사용 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Kotlin 로그 사용 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기