LOG4J2:以编程方式配置时禁用 "No log4j2 configuration file found.." 打印

LOG4J2: Disable "No log4j2 configuration file found.." print when configuring programmatically

我没有使用任何 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[=37 禁用了另一个关于 Log4j2 JMX 的通知=].但是我找不到这个。

您必须实施初始化方法才能从代码正确初始化 log4j 配置。

查看下面页面中的 "How do I configure log4j2 in code without a configuration file" 部分,该部分还提供了源代码。

http://logging.apache.org/log4j/2.x/faq.html

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

-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);

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

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