将Maven项目构建版本放入MDC

时间:2019-03-29 04:28:02

标签: java maven mdc

我正在研究通过Maven制作的Java Spring Boot应用程序。

假设我的pom.xml的版本为2.1.205。
我希望将其放入slf4j MDC中,以便在打印每个日志时,都应该打印我当前版本的版本。

1 个答案:

答案 0 :(得分:0)

首先,请确保生成一个带有属性文件的jar,其中显示了版本号,如this answer所示。

然后,在 Use MDC (Mapping Diagnostic Context) in your log 中的“ Moulin Raphaël”之后,在src/main/resources/log4j2.xml

中定义图案布局
<PatternLayout pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{%X}{faint} %clr{:}{faint} %m%n%xwEx"> </PatternLayout>
  

如果Log4j消息格式定义中使用了%X掩码,则此映射将显示在日志中。
  我们的src/main/resources/log4j2.xml文件中就是这种情况。

编写一个CommandLineRunner,它将正确的值输入到日志记录器中。

package com.yourapp.mdc;

...
import org.slf4j.MDC;

@Component
public class Execute implements CommandLineRunner {
    ... 

    public void run(String... args) {
        MDC.put("Version", "Version as read from properties file");
        log.info("Test Log4j with MDC");
    }
}

您可以在以下地方使用该记录器:

private static final Logger log = LoggerFactory.getLogger(Example.class);