【问题标题】:log4j2,yml - ThreadContext value is emptylog4j2,yml - ThreadContext 值为空
【发布时间】:2021-06-28 00:43:20
【问题描述】:

我正在使用 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} 但到目前为止没有什么对我有用。

请指导我。

谢谢!

【问题讨论】:

    标签: log4j2


    【解决方案1】:

    %X{hostname} 仅在您将主机名值添加到 ThreadContext 时才有效。但你不需要这样做。 Log4J 会自动为您填充主机名变量。因此,只需在您的模式中指定 ${hostName}。

    【讨论】:

    • 我已更改为 "%d{yyyy-MM-dd HH:mm:ss} %-5p ${hostname}:%m%n" 但仍未显示。它显示的是 "2021 -04-01 11:45:54 错误 ${hostname}: 消息...它不接受它。
    • 谢谢。我已经为其他发现此问题的人更新了答案。
    猜你喜欢
    • 2018-03-07
    • 2013-05-17
    • 2018-09-15
    • 2021-03-12
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2010-11-07
    • 2015-09-03
    相关资源
    最近更新 更多