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
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
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
3
4
5
6
7
8
9
10
11
12
13