首页 > 解决方案 > 以编程方式使用以下 java 代码创建附加程序,我需要使用我的 partternLayout 添加 MDC

问题描述

使用 log4j2.xml 在 java 中以编程方式创建附加程序需要使用 Log4j2 的 PatternLayout 添加 MDC 键变量,任何人都可以查看下面的代码并告诉如何添加 mdc 变量,其值将在 looger.info 调用之前被替换

PatternLayout layout = PatternLayout.newBuilder().withConfiguration(config)
            .withPattern("%d{HH:mm:ss.SSS} %level %msg%n").build();


final Appender appender = FileAppender.createAppender("target/test.log", "false", "false", "File", "true",
              "false", "false", "4000", layout, null, "false", null, config);
   appender.start();
   addAppender(appender);
   LoggerConfig loggerConfig = LoggerConfig.createLogger("false", "info", "org.apache.logging.log4j",
              "true", refs, null, config, null );
   loggerConfig.addAppender(appender, null, null);
   addLogger("com", loggerConfig);

现在我需要每当我​​的日志语句被打印时,它们也会打印一些值来告诉他们的状态。

如何在创建上述模式布局时添加 MDC 键?

==> logger.info(" Here we are "); 的当前行为 正在打印“我们来了”

我的期望是 => 语句应该带有 MDC key 。

标签: javalog4j2mdc

解决方案


您的模式应该包含类似%X{someKey}.

然后在您的代码中,您将设置该值,例如:

MDC.put("someKey", someValue);

推荐阅读