Dropwizard 添加过滤器以记录相关 ID

Dropwizard add filters to log correlation id

我正在做一个基于 dropwizard 的项目。我想在过滤器的请求的 http header 中记录相关 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() {

}

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

如何捕获和记录关联 ID?

有可用的解决方案:

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

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

CorrelationId header 传递给您调用的所有服务,注意线程切换,例如在异步调用的情况下或使用像 Hystrix 这样的断路器时。

将 header 添加到您的日志记录模式,如果您使用的记录器使用 MDC 或类似设施,请预先将 CorrelationId 存储在那里。

将 header 添加到响应中。