先上图 :
logback 前阵子升级到1.1.13, 和1.1.12还是有些变化的,具体的变化, 参看
http://logback.qos.ch/news.html
在配置文件上, 加载顺序中, 多了使用 ServiceLoader 查找Configurator接口的第一个实现类
目前完整的加载顺序是:
1. 如果配置了 指定了 logback.configurationFile属性,将使用这个属性的地址
比如 启动的时候,指定了 java -Dlogback.configurationFile=/path/to/config.xml xxxxxx
2.如果没有配置上面的属性, 将会在classpath中查找 logback.groovy 文件
3.如果没有找到文件, 将会在classpath中查找 logback-test.xml 文件
4.如果没有找到文件, 将会在classpath中查找 logback.xml 文件
5.如果没有找到文件, 如果是 jdk6+,那么会调用ServiceLoader 查找 com.qos.logback.classic.spi.Configurator接口的第一个实现类
6.如果上面都没有,将自动使用ch.qos.logback.classic.BasicConfigurator,在控制台输出日志
以上源码 参见 :
private URL findConfigFileURLFromSystemProperties(ClassLoader classLoader, boolean updateStatus) {
String logbackConfigFile = OptionHelper.getSystemProperty(CONFIG_FILE_PROPERTY);
if (logbackConfigFile != null) {
URL result = null;
try {
result = new URL(logbackConfigFile);
return result;
} catch (MalformedURLException e) {
// so, resource is not a URL:
// attempt to get the resource from the class path
result = Loader.getResource(logbackConfigFile, classLoader);
if (result != null) {
return result;
}
File f = new File(logbackConfigFile);
if (f.exists() && f.isFile()) {
try {
result = f.toURI().toURL();
return result;
} catch (MalformedURLException e1) {
}
}
} finally {
if (updateStatus) {
statusOnResourceSearch(logbackConfigFile, classLoader, result);
}
}
}
return null;
}
参见 :http://logback.qos.ch/manual/configuration.html