我正在开发一个基于 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() {
}
然后将其注册到我的应用程序类中。
如何捕获并记录相关 ID?
最佳答案
有现成的解决方案:
该模式非常简单,验证请求
是否已经有一个CorrelationId
header ,如果是,则将 header 添加到ThreadLocal
您的MDC
或其他易于检索数据的内容。如果没有生成新的,通常是 UUID
。
将 CorrelationId
header 传递给您调用的所有服务,注意线程切换,例如在异步调用或使用 Hystrix 等断路器时。
如果您使用的记录器使用 MDC 或类似设施,则将 header 添加到您的日志记录模式中,并预先将 CorrelationId
存储在其中。
将 header 添加到响应中。
关于java - Dropwizard 添加过滤器来记录相关 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616246/