如何抑制初始 StatusLogger 错误消息

问题描述 投票:0回答:2

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

POI 中的日志记录适用于 POI 开发人员,不建议用于正常操作(即最终用户)。 对于我的用例,我根本不想使用日志记录。 但是,当我的应用程序第一次加载其中一个 POI 类时,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 世界并编写一个空记录器?

apache-poi log4j2
2个回答
4
投票

您可以通过在

Log4j2 属性源
之一中将记录器上下文工厂显式设置为 org.apache.logging.log4j.simple.SimpleLoggerContextFactory 来禁用该消息。

您可以添加:

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

到类路径上的

log4j2.component.properties
文件。

编辑:从版本

2.24.0
开始,您应该使用
log4j.provider
属性:

log4j.provider = org.apache.logging.log4j.simple.internal.SimpleProvider

1
投票

添加到命令行标志:

-Dlog4j2.loggerContextFactory=org.apache.logging.log4j.simple.SimpleLoggerContextFactory

本厂默认设置为

SimpleLogger

© www.soinside.com 2019 - 2024. All rights reserved.