spring boot嵌入式tomcat将日志添加到每个tomcat请求中

时间:2016-10-06 17:42:12

标签: java spring spring-boot spring-web

我使用的是spring boot 1.3.3版。随着嵌入式tomcat。

对于每个Web请求,我想知道如何拦截Web请求并执行一些自定义代码,然后继续请求。

我的预感是我会覆盖一些默认的servlet bean或方法?我对此并不了解。

所以要提出具体的问题。对于每个Web请求,我将如何执行以下代码

@Override  
public void someGenericWebParentRequest(Servlet servletRequest){
   log.info("custom log called");
   MDC.put("host-name", System.getenv("HOSTNAME"));  // kibana hostname filter added

   // whatever code you fancy etc :-)       

   return servletRequest;  // continues onto web target controller 
}

1 个答案:

答案 0 :(得分:2)

您可以使用 Servlet过滤器并在 doFilter()中添加拦截请求。 要将其添加到Spring Context中,请添加 @Component。

参考此示例。

@Component
public class SecurityFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
         //you can intercept request and response here
        System.out.println("###### security filter ");
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }
}