如何在控制台应用程序中禁用log4j2的自动初始化?我知道它可以在servlet上下文中禁用
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>true</param-value>
</context-param>
但是,如何在控制台应用程序中?我猜:
System.setProperty("isLog4jAutoInitializationDisabled", "true");
我试过了,但没有。
1条答案
按热度按时间70gysomp1#
当log4j2初始化时,它需要一个配置。默认配置是将所有错误消息记录到控制台,并忽略其他消息。
这通常不是您想要的,您可以通过提供满足您需要的配置来改变这一点。最常用的方法是创建一个文件
log4j2.xml
把这个放到类路径中。配置文件语法在用户手册中有很好的文档记录,其中有很多例子。尤其是附加器和布局上的页面可能会引起兴趣。log4j2还支持json、yaml和properties格式的配置文件(不同于log4j-1.2格式!),但手册中的大多数示例都是xml。
最后,您可以使用系统属性指定配置文件的位置
log4j.configurationFile
,因此它不必在类路径上。如果配置有问题,请使用
<Configuration status="trace">
在配置文件的顶部,将内部log4j2状态消息打印到控制台(使用WARN
把它关掉。)从log4j 2.9开始,您可以通过指定系统属性来启用内部状态日志记录
log4j2.debug
(没有值)。这有助于排除故障。