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?
有可用的解决方案:
模式非常简单,验证 request
是否已经有一个 CorrelationId
header,如果是,则将 header 添加到 ThreadLocal
你的MDC
或其他易于检索数据的地方。如果不生成一个新的通常是 UUID
.
将 CorrelationId
header 传递给您调用的所有服务,注意线程切换,例如在异步调用的情况下或使用像 Hystrix 这样的断路器时。
将 header 添加到您的日志记录模式,如果您使用的记录器使用 MDC 或类似设施,请预先将 CorrelationId
存储在那里。
将 header 添加到响应中。
我正在做一个基于 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?
有可用的解决方案:
模式非常简单,验证 request
是否已经有一个 CorrelationId
header,如果是,则将 header 添加到 ThreadLocal
你的MDC
或其他易于检索数据的地方。如果不生成一个新的通常是 UUID
.
将 CorrelationId
header 传递给您调用的所有服务,注意线程切换,例如在异步调用的情况下或使用像 Hystrix 这样的断路器时。
将 header 添加到您的日志记录模式,如果您使用的记录器使用 MDC 或类似设施,请预先将 CorrelationId
存储在那里。
将 header 添加到响应中。