如何抑制初始 StatusLogger 错误消息

How can I suppress the initial StatusLogger error message

我在我的应用程序中使用 Apache POI 5.2.2。 Apache POI 使用 log4j2 作为其用于调试的内部日志记录机制。因此 log4j-api-2.17.2.jar 是必需的依赖项。在这里我应该注意,我没有使用 maven,所以我下载了 POI 二进制分发版并在应用程序 class 路径中包含所需的依赖项。

POI 登录是为 POI 开发者准备的,不推荐用于正常操作(即最终用户)。对于我的用例,我根本不想使用日志记录。但是,当我的应用程序首次加载其中一个 POI classes 时,以下消息会打印在 stderr 上:

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...

我不想添加 log4j-core,因为我真的不想要日志记录。我真的只想禁止显示此消息,因为日志记录与应用程序无关。我想以编程方式执行此操作,以避免为我不使用的内容添加配置文件。我试图通过将 log4j2.StatusLogger.level 属性 设置为 OFF 来做到这一点,但这没有任何区别(我也尝试将其设置为 0)。

有没有我可以用来抑制 StatusLogger 消息的简单咒语?或者我是否必须完全进入 log4j2 世界并编写一个空记录器?

您可以通过在 Log4j2 property sources 之一中将记录器上下文工厂显式设置为 org.apache.logging.log4j.simple.SimpleLoggerContextFactory 来禁用消息。

例如,您可以添加:

log4j2.loggerContextFactory = org.apache.logging.log4j.simple.SimpleLoggerContextFactory

到类路径中的 log4j2.component.properties 文件。