공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_2 (gateway 사용)

데부한 2023. 2. 13. 23:57
반응형

 

 

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

Netflix Zuul - Filter 적용

강의에서는 Netflix Zuul을 사용해서 필터링했지만 나는 spring cloud gateway를 사용했다.

LogginFilter.java 생성

 

@Component // 일반적인 빈 형태
@Slf4j // jackson을 통한 logger 사용
public class LoggingFilter extends AbstractGatewayFilterFactory<LoggingFilter.Config> {

    @Data
    public static class Config {
        private String baseMessage;
        private boolean preLogger;
        private boolean postLogger;
    }

    public LoggingFilter() {
        super(Config.class);
    }

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

            log.info("Logging Filter baseMessage : {}", config.getBaseMessage());
            if(config.isPreLogger()) {
                // Custom Pre Filter
                log.info("Global Filter Start : request id -> {} ", request.getId());
            }

            //Custom Post Filter
            return chain.filter(exchange).then(Mono.fromRunnable(() -> {
                response.getStatusCode();
            }));
        }));
    }
}

 

application.yml 추가

spring:
	cloud:
    	gateway:
            default-filters:
              - name: LoggingFilter
                args :
                  baseMessage : test
                  preLogger : true
                  postLogger : true

 

크롬에서 확인

위 페이지로 접속하면 위에서 설정한 로그가 찍히는 걸 볼 수 있다.

 


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

 

반응형