package com.github.signed.boot.logfilter;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE;
@Configuration
public class LogFilterAutoConfiguration {
@Bean(name = "requestLogFilter")
public FilterRegistrationBean requestLoggingFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setName("RequestLogFilter");
filterRegistrationBean.setOrder(HIGHEST_PRECEDENCE);
filterRegistrationBean.setFilter(new RequestLogFilter());
return filterRegistrationBean;
}
private static class RequestLogFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
System.out.println("enter " + getFilterName());
filterChain.doFilter(request, response);
System.out.println("exit " + getFilterName());
}
}
}