log4j2,yml - ThreadContext 值为空

log4j2,yml - ThreadContext value is empty

我正在使用 spring-boot-starter-log4j2:2.1.2.RELEASE 和 log4j2.yml 文件。 在我的申请代码中,

private static final Logger logger = LogManager.getLogger(LoggingAspect.class);
...
ThreadContext.put("hostname", InetAddress.getLocalHost().getHostName());
...
logger.error("message");

和log4j2.yml文件,

Appenders:
  RollingRandomAccessFile:
   - name: Alerts
     filename: ...
     filePattern: ...
     PatternLayout:
      Pattern: "%d{yyyy-MM-dd HH:mm:ss} %-5p %X{hostname}:%m%n"

在日志文件中,主机名丢失,而时间戳和消息按预期显示。 我试过 ${ctx:hostname}、$${ctx:hostname} 但到目前为止没有任何效果。

请指导我。

谢谢!

%X{hostname} 仅当您将主机名值添加到 ThreadContext 时才有效。但你不需要那样做。 Log4J 会自动为您填充一个主机名变量。所以只需在您的模式中指定 ${hostName} 即可。