package com.github.signed.boot.environment; import com.github.signed.boot.logfilter.LogFilterAutoConfiguration; import org.apache.log4j.MDC; 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 java.util.UUID; import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE; @Configuration public class RequestIdentifierAutoConfiguration { @Bean(name = "requestIdFilter") public FilterRegistrationBean requestLoggingFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setName("RequestIdFilter"); filterRegistrationBean.setOrder(HIGHEST_PRECEDENCE); filterRegistrationBean.setFilter(new OncePerRequestFilter() { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { System.out.println("enter mdc"); try { MDC.put("requestId", UUID.randomUUID()); filterChain.doFilter(request, response); } finally { MDC.clear(); } System.out.println("exit mdc"); } }); return filterRegistrationBean; } }