Backend/Spring+Boot

Request 정보 Logging 하기

findmypiece 2021. 5. 4. 09:42
728x90

개발서버에서는 Request 정보를 모두 로그를 찍어놓는 것이 테스트나 분석에 도움이 된다. 매번 log.info 로 찍거나 aop 를 구현하는 것도 방법이지만 Spring에서 제공하는 필터를 활용하는 것은 좋은 방법이다. CommonsRequestLoggingFilter 가 바로 그것인데 아래와 같이 셋팅하면 된다.

 

1. 필터등록

@Configuration
public class WebMvcConfig {


  @Bean
  public CommonsRequestLoggingFilter commonsRequestLoggingFilter() {
      CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
      filter.setIncludeClientInfo(true); //클라이언트 주소와 세션 ID를 로그에 출력
      filter.setIncludeHeaders(true); //헤더정보를 로그에 출력
      filter.setIncludeQueryString(true); //queryString을 로그에 출력
      filter.setIncludePayload(true); //body request 내용을 로그에 출력
      filter.setMaxPayloadLength(1000);	//로그에 포함할 body request 사이즈 제한
      return filter;
  }

}

 

2. application.yml 에서 필터 로깅 레벨 지정

logging:
  level:
    org:
      springframework:
        web:
          filter: DEBUG

 

참고로 body request 는 반드시 소모되어야 출력이 된다. 404 Not Found 같이 헤더나 파라미터만 읽고 응답이 완료되는 경우에는 찍히지 않는다는 말이다. 이 경우에는 어차피 다른 문제가 있기 때문에 body 는 확인할 필요가 없지만 이 경우에도 굳이 body를 확인하고 싶다면 CommonsRequestLoggingFilter 자체를 상속받아서 재정의하면 된다. 아래 포스팅을 참고하자.

medium.com/@slothink/spring-boot-%EB%A1%9C-%EC%9A%94%EC%B2%AD%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EB%A1%9C%EA%B9%85%ED%95%98%EA%B8%B0-127a381be1d

 

Spring Boot 로 요청에 대해서 로깅하기

참조: https://www.baeldung.com/spring-http-logging

medium.com

 

728x90

'Backend > Spring+Boot' 카테고리의 다른 글

SpringBoot embedded Redis Cluster  (0) 2021.05.04
spring cloud config 비활성화  (0) 2021.05.04
크로스 도메인 이슈  (0) 2021.04.29
@RestController  (0) 2021.04.27
@ResquestParam, @RequestBody 와 Get, Post  (0) 2021.04.26