본문 바로가기

MSA (MicroServiceArchitecture)/Eureka & Spring Cloud Gateway

MSA (Zuul Filter + Log 찍기)

728x90
반응형

# Zuul 필터를 통해 로그를 찍는 방법에 대해 알아보자.

1. 아래의 그림처럼 패키지를 생성하고 class 파일을 생성한다.

2. extends ZuulFilter 후 alt+insert 키를 눌러서 implement Method 해주거나 마우스 우클릭 후 Generate 후 implement 해주면 아래와 같이 오버라이드 되어 생성이 된다.

- 해당 필터는 사용자가 요청이 들어올때마다 먼저 실행되는 메소드라고 볼 수 있다.

package com.example.zuulservice.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;

@Slf4j
@Component
public class ZuulLoggingFilter extends ZuulFilter {

    @Override
    public Object run() throws ZuulException {
        log.info("************** printing logs: ");

        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        log.info("**************" + request.getRequestURI());

        return null;
    }

    @Override
    public String filterType() {
        
        return "pre";
    }

    @Override
    public int filterOrder() {
        
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        
        return true;
    }

}

3. 로그 찍기, run 메소드가 실행되므로 run 메소드안에 아래와같이 코드를 입력해주면 된다.

    @Override
    public Object run() throws ZuulException {
        log.info("************** printing logs: ");

        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        log.info("**************" + request.getRequestURI());

RequestContext란?

요청/회신 모델에서 RequestContext 개체는 들어오는 요청과 전달 되는 회신 간의 링크이다. 서버는 요청을 받으면 RequestContext 채널에 대 한 요청을 나타내는 인스턴스를 제공 한다.

httpservletrequest 란?

HttpServletRequest는 URL정보, 쿠키, 헤더, GET/POST로 전송한 값을 가져오는데 사용된다.

- 로그는 아래와 같이 찍힌다.

- 해당 필터는 로그 및 인증정보 체크 그리고 추가적인 변환작업 등에 활용할 수 있다.

4. 브라우저에서 실행된 모습

728x90
반응형