2017-09-04 41 views
2

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

<context-param> 
    <param-name>isLog4jAutoInitializationDisabled</param-name> 
    <param-value>true</param-value> 
</context-param> 

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

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

我试过了,但没有。

回答

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(不带值)来启用内部状态日志记录。这应该有助于解决问题。

相关问题