ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OpenFeign] 로깅 설정 하기
    스프링프레임워크/openfeign 2020. 12. 22. 16:53

    이번 시간에는 OpenFeign을 이용하여 REST API 호출 시 Request, Response에 대한 로깅을 남기는 방법에 대해서 알아보도록 하겠습니다.

     

    생성된 각각의 Feign 클라이언트에 대해서 logger가 생성되어집니다.

    기본적으로 logger의 이름은 Feign 클라이언트를 생성하는데 사용되어지는 interface의 전체 클래스 이름입니다.

    Feign 로깅은 오직 DEBUG 레벨에서만 동작하게 됩니다.

     

    클라이언트별로 설정할 수 있는 Logger.Level 객체는 아래와 같습니다.

    • NONE : 로깅하지 않습니다. (DEFAULT)
    • BASIC : Request Method와 URL 그리고 Reponse 상태 코드와 실행 시간을 로깅합니다.
    • HEADERS : Request, Response Header 정보와 함께 BASIC 정보를 로깅합니다.
    • FULL : Request와 Response의 Header, Body 그리고 메타데이터를 로깅합니다.

    로깅은 하는 방법은 application.yml을 이용하거나 Configuratin 설정을 이용해서 설정할 수 있습니다.

     

    먼저 application.yml을 이용해서 로깅을 하는 방법에 대해서 알아보도록 하겠습니다.

    아래 설정과 같이 application.yml에 FeignClient에서 설정 한 value값 log-client을 이용해서 특정 FeignClient에 대한 로그 레벨을 설정 할 수 있습니다.

    모든 Feign Client에 적용하길 원하는 경우 log-client 부분에 default를 입력해서 설정할 수 있습니다.

    feign:
      client:
        config:
          log-client:	# 특정 FeignClient가 아닌 모든 Client에 대해 적용하고자 하는 경우 default 입력
            loggerLevel: FULL
    
    external-api:
      http-bin: http://localhost:8080
    
    logging.level.com.guide.openfeign.infra: DEBUG
    package com.guide.openfeign.infra;
    
    import com.guide.openfeign.domain.logger.Logger;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    
    @FeignClient(value = "log-client", url = "${external-api.http-bin}")
    public interface LogFeignClient {
        @PostMapping("/log")
        Logger create(@RequestBody Logger body);
    }
    

     

    두 번째 방법은 Configuration 설정을 통해서 로깅 설정을 할 수 있습니다.

    #feign:
    #  client:
    #    config:
    #      default:
    #        loggerLevel: FULL
    
    external-api:
      http-bin: http://localhost:8080
    
    logging.level.com.guide.openfeign.infra: DEBUG
    package com.guide.openfeign.global.config;
    
    import feign.Logger;
    import org.springframework.context.annotation.Bean;
    
    public class LoggerLevelConfiguration {
        @Bean
        Logger.Level feignLoggerLevel() {
            return Logger.Level.FULL;
        }
    }
    
    package com.guide.openfeign.infra;
    
    import com.guide.openfeign.domain.logger.Logger;
    import com.guide.openfeign.global.config.LoggerLevelConfiguration;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    
    @FeignClient(value = "log-client", url = "${external-api.http-bin}", configuration = LoggerLevelConfiguration.class)
    public interface LogFeignClient {
        @PostMapping("/log")
        Logger create(@RequestBody Logger body);
    }
    

     

    이상으로 OpenFeign에서 로깅을 설정하는 방법에 대해서 알아보았습니다.

    댓글

Designed by Tistory.