一.SpringBoot配置扩展点
SpringBoot日志模块使用监听的方式进行初始化,在SpringBoot项目启动后,会通知日志监听器
![](https://img-blog.csdnimg.cn/direct/f754c9d633d948dfa0ed320a752ff09e.png)
在日志监听器中ApplicationStartingEvent事件用来确定到底使用哪个日志系统,logback log4j等
![](https://img-blog.csdnimg.cn/direct/9e25a5fd47094dfab607383764a633f2.png)
在日志监听器中ApplicationEnvironmentPreparedEvent事件中用来确定日志配置文件
![](https://img-blog.csdnimg.cn/direct/c06242acc62d4b0d9aa2c11aa4e06be9.png)
![](https://img-blog.csdnimg.cn/direct/bc67690271694aa2afe0fdee5630552b.png)
如果没有配置logging.config属性,则使用系统约定配置,系统约定配置又分为logback约定和spring约定
![](https://img-blog.csdnimg.cn/direct/2e831004d33a49aeb52e0cbfa2020e65.png)
logback的默认配置如下:
@Override protected String[] getStandardConfigLocations() { return new String[] { "logback-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml" }; }
spring的默认配置如下:
protected String[] getSpringConfigLocations() { String[] locations = getStandardConfigLocations(); for (int i = 0; i < locations.length; i++) { String extension = StringUtils.getFilenameExtension(locations[i]); locations[i] = locations[i].substring(0, locations[i].length() - extension.length() - 1) + "-spring." + extension; } return locations; }
这段代码含义就是logback默认配置的前缀"-spring".xml
二.Logback加在配置优先级
优先级为默认配置>默认配置的前缀"-spring".xml
默认配置又是数组的先后顺序