代码之家  ›  专栏  ›  技术社区  ›  hal9000

Dropwizard将筛选器添加到日志相关ID

  •  0
  • hal9000  · 技术社区  · 6 年前

    我正在研究一个基于DropWizard的项目。我想在过滤器中记录请求的HTTP头上的相关ID,并在响应中记录它。知道怎么做吗?我正在做一个过滤器:

    public class CorrelationIdServerFilter implements Filter {
    
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
    }
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
      throws IOException, ServletException {
    
    
    }
    
    @Override
    public void destroy() {
    
    }
    

    然后在我的应用程序类中注册它。

    如何捕获和记录相关ID?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Andreas    6 年前

    有现成的解决方案:

    https://github.com/dhatim/dropwizard-correlation-id/blob/master/src/main/java/org/dhatim/dropwizard/correlationid/CorrelationIdClientFilter.java

    模式非常简单,验证 request 已经有了 CorrelationId 头,如果是,将头添加到 ThreadLocal 你的 MDC 或者其他容易检索数据的地方。如果没有,通常会生成一个新的 UUID .

    通过 相关关系 头到您调用的所有服务,请注意线程开关,例如在异步调用的情况下或在使用像hystrix这样的断路器时。

    将头添加到日志模式中,如果使用的是使用MDC或类似设施的记录器,请存储 相关关系 提前到那里。

    将标题添加到响应中。