공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_6

데부한 2023. 2. 20. 22:50
반응형

 

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway-Logging Filter

Global Filter와 비슷한 Logginfg Filter를 작성해보자.

그럼 이 프로젝트에 적용된 필터는 3개이다. Custom Filter, Global Filter, Logging Filter.

이 필터들의 순서는 다음과 같다.

  • Global Filter PRE
  • Custom Filter PRE
  • Logging Filter PRE
  • Logging Filter POST
  • Custom Filter POST
  • Global Filter POST

 

LoggingFilter.java 생성

@Override
public GatewayFilter apply(Config config) {
    GatewayFilter filter = new OrderedGatewayFilter(((exchange, chain) -> {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse response = exchange.getResponse();

        log.info("Logging Filter baseMessage : {}", config.getBaseMessage());

        if(config.isPreLogger()) {
            log.info("Logging PRE Filter : request id -> {}", request.getId());
        }

        // Custom Post Filter
        return chain.filter(exchange).then(Mono.fromRunnable(() -> {
            if(config.isPostLogger()) {
                log.info("Logging POST Filter : response code -> {}", response.getStatusCode());
            }
        }));
    }), Ordered.HIGHEST_PRECEDENCE);

    return filter;
}

 

 

application.java 설정

        - id: second-service
          uri: http://localhost:8082/
          predicates:
            - Path=/second-service/**
          filters:
#            - AddRequestHeader=second-request, second-request-header2
#            - AddResponseHeader=second-response, second-response-header2
            - name: CustomFilter
            - name: LoggingFilter
              args:
                baseMessage: Hi, there.
                preLogger: true
                postLogger: true

filter를 여러개 사용하려면 name이란 속성을 붙여줘야 한다.

서버 재실행 후 크롬에서 확인 및 콘솔 확인

 

 

- 출처 : 인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의

반응형