首页 > 解决方案 > 如何在日志文本上将 OrderId 显示为 Log4j 模式布局

问题描述

我无法让日志消息以正确的方式显示。我正在使用这个 Log4J 模式布局:

pattern="ORDERID : $${ctx:ORDERID} %msg%n"

我想看到如下输出:

ORDERID: 123 测试上下文

但这是我得到的输出:

ORDERID : ${ctx:ORDERID} 测试上下文

这是生成日志消息的代码:

@Test
public void testThreadContext() {
    ThreadContext.push("Message only");
    ThreadContext.push("int", 1);
    ThreadContext.push("int-long-string", 1, 2L, "3");
    ThreadContext.push("ORDERID", "123");
    logger.info("Test Context");
    ThreadContext.clearAll();
}

标签: javalog4jlog4net-appendergraylogthreadcontext

解决方案


我使用了 ThreadContext.put 而不是 ThreadContext.push。这是工作。

ThreadContext.put("ORDERID", "123"); 而不是 ThreadContext.push("ORDERID", "123");

结果日志文本 URL

在此处输入图像描述


推荐阅读