logging - 如何在 Spring Boot 中使用 logback 和 SLF4J 的 MDC 来捕获 POST 请求 json 中的唯一跟踪?

标签 logging spring-boot logback slf4j mdc

我们正在使用:

  • 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/46563316/

相关文章:

Tomcat6 - 如何通过 log4j 或 JULI 获取 session 参数?

apache - Spring Boot 和 Apache2 在同一服务器和端口上

java - 无法使用 logback 附加程序将日志推送到应用程序洞察

java - 如何强制Java显示完整的堆栈跟踪

scala - 为什么 Scalatra 警告我有关 log4j 的信息

node.js - 是否可以一起使用 winston 日志记录和调试模块?

java - Log4j2同步日志记录

java - 使用gradle生成方法aspectOf()

ios - Testflight SDK 和 iOS 模拟器 - 如何使用?

java - 理解tomcat/spring boot多线程