如何在控制台应用程序中禁用log4j2的自动初始化?

时间:2017-09-04 10:22:37

标签: java logging configuration log4j log4j2

如何在控制台应用程序中禁用log4j2的自动初始化?我知道它可以通过

在servlet上下文中禁用
 <context-param>
    <param-name>isLog4jAutoInitializationDisabled</param-name>
    <param-value>true</param-value>
</context-param>

但是,如何在控制台应用程序中?我想:

System.setProperty("isLog4jAutoInitializationDisabled", "true");

我尝试了,但没有。

1 个答案:

答案 0 :(得分:1)

当Log4j2初始化时,需要配置。默认配置是将所有ERROR消息记录到控制台,并忽略其他消息。

这通常不是您想要的,您可以通过提供满足您需求的配置来更改此设置。最常见的方法是创建一个文件log4j2.xml并将其放在类路径中。配置文件syntax已在用户手册中详细记录,其中包含许多示例。特别是appenderslayouts上的网页可能会引起关注。

Log4j2还支持JSON,YAML和属性格式的配置文件(与Log4j-1.2格式不同!),但手册中的大多数示例都是xml。

最后,您可以使用系统属性log4j.configurationFile指定配置文件的位置,因此它不会放在类路径上。

如果配置有问题,请使用配置文件顶部的<Configuration status="trace">将内部Log4j2状态消息打印到控制台。 (使用WARN将其关闭。)

从Log4j 2.9开始,您可以通过指定系统属性log4j2.debug(不带值)来启用内部状态记录。这应该有助于排除故障。