java - Dropwizard 添加过滤器来记录相关 ID

标签 java dropwizard

我正在开发一个基于 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?

最佳答案

有现成的解决方案:

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

该模式非常简单,验证请求是否已经有一个CorrelationId header ,如果是,则将 header 添加到ThreadLocal您的MDC 或其他易于检索数据的内容。如果没有生成新的,通常是 UUID

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

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

将 header 添加到响应中。

关于java - Dropwizard 添加过滤器来记录相关 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616246/

相关文章:

java - JButton 显示在图标后面

java - 在junit5中进行单元测试dropwizard时如何注入(inject)HttpSession和HttpServletRequest?

java - Dropwizard session 集群

java - Dropwizard:强制使用 JSON 整数参数

Java游戏 - 处理线性运动

java - grails 中 << 运算符定义的用法是什么?

java - 无法在azure windows vm上使用application Insights代理启动java spring boot应用程序

java - 将 Eclipse/GWT 插件应用程序拆分为单独的项目

java - 将 Apache Commons HttpClient 日志调整为 Dropwizard

jackson - Dropwizard 从 0.6.2 升级到 0.7.1 报错