spring 嵌入式启动 tomcat 将日志附加到每个 tomcat 请求

spring boot embedded tomcat append log to every tomcat request

我正在使用 spring 引导版本 1.3.3。随着嵌入式 tomcat.

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

我的预感是我会覆盖一些默认的 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 
}

您可以使用 Servlet Filter 并在 doFilter() 中添加拦截请求。 要将其添加到 Spring 上下文中,请添加 @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() {

    }
}