我在应用程序中使用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世界并编写一个空日志记录器?
您可以通过在Log4j2属性源之一中显式地将记录器上下文工厂设置为org.apache.logging.log4j.simple.SimpleLoggerContextFactory
来禁用该消息。
你可以,例如,添加:
log4j2.loggerContextFactory = org.apache.logging.log4j.simple.SimpleLoggerContextFactory
到类路径上的log4j2.component.properties
文件。
添加到命令行标志:
-Dlog4j2.loggerContextFactory=org.apache.logging.log4j.simple.SimpleLoggerContextFactory
此工厂将默认设置SimpleLogger
。