log4j配置无效的解决方法

前言

在项目中配置了log4j不起作用,但仍然可以输日志,猜想是不是在其它地方配置了log4j。

解决方法

如何去确认是否是使用其它地方的log4j配置呢? 可以在java命令中加入-Dlog4j.debug虚拟机参数来显示log4j加载配置文件的位置。

打印结果显示:

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@18b4aac2.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@18b4aac2 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@18b4aac2.
log4j: Using URL [jar:file:../hisuConnPoolAPI20160105.jar!/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL jar:file:../lib/hisuConnPoolAPI20160105.jar!/log4j.properties
log4j: Parsing for [root] with value=[debug,stdout,file].
log4j: Level token is [debug].
1
2
3
4
5
6
7
8

从中可以很明显加载了第三方jar包的log4j.properties文件。

扩展

此时,如果我们在自己定义一个log4j.properties的文件,看会加载哪个配置文件呢?

此时打印的内容显示:

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@18b4aac2.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@18b4aac2 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@18b4aac2.
log4j: Using URL [file:../target/classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:../target/classes/log4j.properties

1
2
3
4
5
6
7

发现找到的是刚才自定义的日志文件。

相关源码

加载配置文件部分的源码

//LoggerManager.java

static public final String DEFAULT_CONFIGURATION_FILE = "log4j.properties";
  
static final String DEFAULT_XML_CONFIGURATION_FILE = "log4j.xml"; 

// 下面是一个静态代码块,可以看到先找classpath下的log4j.xml文件,如果找不到就找classpath下的log4j.properties。loader.getResource找到一条就会结束。
if(configurationOptionStr == null) {	
	url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE);
	if(url == null) {
	  url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2 个月前