반응형
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) 강의
반응형