본문 바로가기
Dev/Spring

Spring Boot Request Logging - CommonsRequestLoggingFilter

by 돈코츠라멘 2020. 1. 3.

Spring Boot로 api를 개발할 때 쉽게 Request를 Logging 할 수 있게 Spring에서는 CommonsRequestLoggingFilter를 Servlet Filter 형태로 제공한다.

아래 bean 정의를 소스코드에 추가하고, logger 설정에서 org.springframework.web.filter의 logger level을 debug로 바꾼다.

CommonsRequestLoggingFilter Bean

@Configuration
class FilterConfig {

    @Bean
    fun commonsRequestLoggingFilter(): CommonsRequestLoggingFilter {
        val filter = CommonsRequestLoggingFilter()
        filter.setIncludeClientInfo(true)
        filter.setIncludeHeaders(true)
        filter.setIncludePayload(true)
        filter.setIncludeQueryString(true)
        filter.setMaxPayloadLength(1024)
        return filter
    }
}

logback-spring.xml

<logger name="org.springframework" level="info"/>
<logger name="org.springframework.web.filter" level="debug"/>

FilterRegistrationBean로 특정 url에서만 filter 적용

특정 url 패턴에 대해서만 필터를 적용하고 싶다면 FilterRegistrationBean bean을 추가적으로 만들어서 url을 지정한다.

@Configuration
class FilterConfig {

    @Bean
    fun loggingFilterRegistration(): FilterRegistrationBean<CommonsRequestLoggingFilter> { // 추가
        val registration = FilterRegistrationBean(commonsRequestLoggingFilter())
        registration.addUrlPatterns("/v1/api/*") // /v1/api로 시작하는 url의 request만 logging
        return registration
    }

    @Bean
    fun commonsRequestLoggingFilter(): CommonsRequestLoggingFilter {
        val filter = CommonsRequestLoggingFilter()
        // ... 
        return filter
    }
}

댓글