在 Spring WebFlux 中实现自动化 MDC 日志

MDC 的全称是 映射诊断上下文。它被用来增强应用程序的日志记录功能。这意味着,映射诊断上下文(MDC)提供了一种机制,能够用更多的上下文信息来丰富日志消息,而这些信息在真正需要记录日志的作用域中可能是无法直接获取的。在 Spring WebFlux 中使用 MDC 对于添加上下文信息特别有用,它使得追踪请求流向变得更容易,也能让我们更方便地将日志与特定的请求或会话关联起来。

在本文中,我们将解释如何在 Spring WebFlux 中创建 MDC 日志,并附带一个合适的示例。在这里,我们将使用 Log4j、Logback、SLF4J 等日志框架。这些日志框架允许我们用额外的上下文信息来丰富日志消息。

MDC 的主要特性:

  • 上下文日志记录:MDC 允许我们将上下文信息插入到日志中。这对于追踪应用程序中的执行流程特别有用。
  • 线程特定的上下文:每个线程都拥有自己的一份上下文映射副本,从而确保上下文数据仅对设置它的线程可见。
  • 自动包含在日志中:一旦上下文信息被添加到 MDC 中,它就可以自动包含在日志消息中,而无需修改日志语句本身。
  • 动态数据:我们可以在 MDC 中动态地添加、删除或更新键值对,从而允许我们在应用程序执行时更改上下文信息。
  • 日志模式配置:通过在日志框架配置中配置日志模式,可以将 MDC 的值包含在日志输出中。
  • 易于使用:MDC 的 API 简单易用,通常只涉及放入、获取和移除上下文数据的基本操作。

为了在 Spring WebFlux 中实现自动化 MDC 日志,我们创建了一个 Spring Boot 项目,该项目构建工具使用 Maven,我们在其中使用了以下依赖项。

项目依赖:


        
            org.springframework.boot
            spring-boot-starter-webflux
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            io.projectreactor
            reactor-test
            test
        
    

项目文件夹结构:

!Project Folder

步骤 1:

一旦项目成功创建,我们就在资源文件夹中创建了一个名为 log4j2.xml 的配置文件。该文件用于定义日志模式并包含 MDC 信息。您可以在上面的项目文件夹图片中看到这个文件。

XML


CODEBLOCK_49d2ead7

步骤 2:

  • 一旦为 MDC 创建了 XML 配置文件。
  • 之后,我们使用 @Component 注解创建了一个 MDCFilter 组件类。
  • 该类继承自 WebFilter
  • 然后,我们重写了 filter 方法,该方法可以过滤请求。
  • 该过滤器会为每个传入的请求生成一个唯一的 requestId,并将其设置在 MDC 中。

Java


CODEBLOCK_01434ed2

步骤 3:

最后,我们使用 Spring 的 @RestController 注解创建了一个名为 MDCController 的 RestController 类。

  • 在这个类中,我们定义了 logger
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/19921.html
点赞
0.00 平均评分 (0% 分数) - 0