日志为空Map时log4j的BUG

Bug of log4j when log empty Map

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
</dependency>

Java 代码:

    Logger logger = LogManager.getLogger();
    Map<String, String> map = new HashMap<>();
    System.out.println(logger);
    logger.info("{}-{}", System.currentTimeMillis(), map);

输出:

org.apache.logging.slf4j.SLF4JLogger@1c2c22f3
20:12:56.257 [main] INFO com.xxx - 1639051976254-1639051976254

显然,正确的输出应该是1639051976254-{} 有没有人有同样的问题?

是的,这是一个已知错误:LOG4J2-2623。您的消息被格式化了两次:

  • 第一次使用 Log4j 2.x,
  • 第二次通过您使用的任何 SLF4J 后端(可能是 Logback)。