空消息工厂的 Log4j 2.6 警告

Log4j 2.6 warning for a null message factory

升级到 log4j2 版本 2.6 后,我遇到了这些警告:

2016-06-06 16:36:14,920 localhost-startStop-1 WARN The Logger foo.bar was created with the message factory org.apache.logging.log4j.spi.MessageFactory2Adapter@437958b6 and is now requested with a null message factory (defaults to org.apache.logging.log4j.message.ParameterizedMessageFactory), which may create log events with unexpected formatting.

2.5版本没问题,有意见吗?!

我在附加程序中看到日志消息

主要是因为记录器是作为实例对象创建的,而不是静态对象,如下所示:

public class PropertiesConfigurationFactory {
    private final Log logger = LogFactory.getLog(getClass());
}

再次创建 PropertiesConfigurationFactory 时,也会创建记录器。

在 LoggerContext 中,它将获取创建的记录器实例

getLogger(name, null)

null 是 MessageFactory

因此它将使用旧记录器的 messagefactory 检查 null 并打印出此警告。好像还可以。

这是 Log4j 2.6 版本中的错误。它已被修复(参见 https://issues.apache.org/jira/browse/LOG4J2-1407)并将在即将发布的 2.6.1 版本中修复(现在正在审核中,应该会在 48 小时内上线)。

这不是真正的问题,错误是不必要地显示了警告。