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