Spring 批量 MDC 日志记录

Spring Batch MDC Logging

我想知道如何在 Spring 批处理中使用 MCD 记录 Job NameExecution ID 等内容。

这是一些代码:

bootstrap.properties

此文件包含我当前记录的项目列表,我已将 execId 添加为此处的第三个元素。

logging.pattern.level=%5p [%X{X-B3-TraceId:-},%X{sessionId:-},%X{execId:-},%X{program:-},%X{mainframeId:-}]
spring.application.name=mcc
spring.profiles.active=globals,local,local-override

MCC 申请

这个文件有我的主要方法。当我使用 MDC.put("execId", "12345"); 在此处手动设置字段时,我在日志中看到了它,但我不明白如何将我需要的实际信息放在这里。

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
public class MccApplication {

    public static void main(String[] args) {
        MDC.put("execId", "12345");
        SpringApplication.run(MccApplication.class, args);
    }

}

如有任何见解,我将不胜感激 :) 谢谢。

免责声明:我不熟悉spring-batch

MDC 将帮助您记录作业名称和执行 ID 以及日志语句,因为 MDC 具有线程关联性。因此,如果您在线程中将某些内容放入 MDC,那么在该线程的整个生命周期中您都可以使用(并登录)这些内容。所以如果你把 MDC.put("execId", "12345"); 放在你的 main 方法中,那将只在主线程中可用。

作业名称和执行 ID 仅在 spring 批处理可能产生的任何子线程中才有意义(我 运行 在这里进行疯狂的假设,因为我不熟悉 spring批次)。所以在你实际工作的开始点添加 MDC.put("execId", "12345");,而不是在 main() 方法中。