LOG4J2:以编程方式配置时禁用“未找到 log4j2 配置文件..”打印

2022-09-03 05:46:38

我没有使用任何XML配置文件,而是以编程方式设置记录器配置。记录器工作正常,但就在我调用下面代码的第一行时,会显示一条警告消息,告诉我找不到配置文件,将使用默认配置。ERROR

但我不希望每次运行程序时都会在控制台上显示此消息,因为我将自己以编程方式添加配置。

消息:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

当我调用下面的代码时,它来了:

LoggerContext context = (LoggerContext) LogManager.getContext(false);

或者,如果我先获得根记录器:

Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

是否可以设置某种属性来禁止显示此消息?还是另一种方法?

注意:我通过设置属性 -Dlog4j2.disable.jmx=true 禁用了有关 Log4j2 JMX 的另一个通知。但是我找不到这个。


答案 1

添加以下系统属性,以便不显示该消息:

-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=OFF

或者,更简单地说:

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.status.StatusLogger;

...

StatusLogger.getLogger().setLevel(Level.OFF);

答案 2

您只需在主类中执行此操作即可。

static {
    StatusLogger.getLogger().setLevel(Level.OFF);
}

推荐