我们正在使用:
- Spring 启动
- Slf4J
- 登录
- ELK 堆栈
现在我们要使用 MDC
将 POST 请求 JSON 中提供的唯一跟踪号添加到给定请求的每个日志语句中。
我用谷歌搜索了一些博客文章,这些对我来说没什么用。
下面是我们正在使用的logback.xml
<configuration>
<property name="PROJECT_ID" value="template-api"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
任何人都可以提供一些关于如何完成此任务的帮助吗?
最佳答案
抱歉,没有足够的代表来撰写评论。这是更正确、完全有效的代码,基于 @glytching 答案:
@Component
public class MDCFilter extends OncePerRequestFilter {
@Autowired
private TrackingnumberGenerator trackGen;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
MDC.put("trackingNumber", trackGen.getTrackingNumber());
try {
filterChain.doFilter(request, response);
} finally {
MDC.remove("trackingNumber");
}
}
}
关于logging - 如何在 Spring Boot 中使用 logback 和 SLF4J 的 MDC 来捕获 POST 请求 json 中的唯一跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961811/