log4j 加载顺序
来源:互联网 发布:suse linux yum配置 编辑:程序博客网 时间:2024/06/06 07:02
首先是:
org.apache.log4j.LogManager类有一个静态块,首先是找log4j.xml,找不到的情况下才找log4j.properties
2,然后是怎么找呢:如下代码,是委托给classloader(加载Loader类的classloader)去找了,
3,classloader的getResource(...)又是怎么找呢:总是先从父classloader里去找,找不到才自己去找
总结:对于不同的应用服务器(或者web服务器)来说,classloader的层次不尽相同。这里以最简单的tomcat来说,如果你的应用是部署到tomcat下的,使用log4j配置文件的顺序就是$TOMCAT_HOME/lib/log4j.xml或者log4j.properties==>你自己web应用/WEB-INF/classes(或者lib)/log4j.xml或者log4j.properties.
对于WEB-INF下是classes优先还是lib优先 你可以自己测试一下。
org.apache.log4j.LogManager类有一个静态块,首先是找log4j.xml,找不到的情况下才找log4j.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// if the user has not specified the log4j.configuration
// property, we search first for the file "log4j.xml" and then
// "log4j.properties"
if
(configurationOptionStr ==
null
) {
url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE);
if
(url ==
null
) {
url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);
}
}
else
{
try
{
url =
new
URL(configurationOptionStr);
}
catch
(MalformedURLException ex) {
// so, resource is not a URL:
// attempt to get the resource from the class path
url = Loader.getResource(configurationOptionStr);
}
}
2,然后是怎么找呢:如下代码,是委托给classloader(加载Loader类的classloader)去找了,
1
2
3
4
5
6
7
8
9
10
11
// We could not find resource. Ler us now try with the
// classloader that loaded this class.
classLoader = Loader.
class
.getClassLoader();
if
(classLoader !=
null
) {
LogLog.debug(
"Trying to find ["
+resource+
"] using "
+classLoader
+
" class loader."
);
url = classLoader.getResource(resource);
if
(url !=
null
) {
return
url;
}
}
3,classloader的getResource(...)又是怎么找呢:总是先从父classloader里去找,找不到才自己去找
1
2
3
4
5
6
7
8
9
10
11
12
public
URL getResource(String name) {
URL url;
if
(parent !=
null
) {
url = parent.getResource(name);
}
else
{
url = getBootstrapResource(name);
}
if
(url ==
null
) {
url = findResource(name);
}
return
url;
}
总结:对于不同的应用服务器(或者web服务器)来说,classloader的层次不尽相同。这里以最简单的tomcat来说,如果你的应用是部署到tomcat下的,使用log4j配置文件的顺序就是$TOMCAT_HOME/lib/log4j.xml或者log4j.properties==>你自己web应用/WEB-INF/classes(或者lib)/log4j.xml或者log4j.properties.
对于WEB-INF下是classes优先还是lib优先 你可以自己测试一下。
0 0
- log4j 加载顺序
- [Log4j] Log4j 的配置和配置文件加载顺序
- 关于log4j中log4j.properties和log4j.xml的加载顺序
- 加载顺序
- 加载顺序
- 加载顺序
- 加载顺序
- log4j的加载机制
- log4j,如何“自动加载”?
- spring 加载log4j
- Log4j配置及加载
- log4j配置文件加载方式
- log4j 加载心得
- spring加载log4j
- Log4J文件的加载
- log4j加载配置
- springboot加载log4j
- Log4j配置文件的加载
- C++调用HTTP实现方式
- 欢迎使用CSDN-markdown编辑器
- Hibernate关联映射之多对一、一对一映射
- socket实现大型文件传输
- matlab报错”xlswrite函数的Object returned error code: 0x800A03EC
- log4j 加载顺序
- java获取服务器一些信息的方法
- 关于mysql 的for update
- Elasticsearch 初探及window下集群的搭建
- EJB+JPA CRUD实现
- dfvsdf
- ios数组操作集合,数组排序
- 动态设置gridview的高度计算方法
- 微信公众平台开发入门教程