外层的实现,实现调用方,可以通过送 configLocation 的方式供统一抽象初始化
org.springframework.boot.logging.ConcreteLoggingSystem#initialize
org.springframework.boot.logging.AbstractLoggingSystem#initialize
(LoggingInitializationContext initializationContext,
String configLocation, LogFile logFile)
如果没送 configLocation 或者 configLocation 为空字符串,就在 initializeWithConventions 中使用 getSpringInitializationConfig 试图寻找 classpath 下命令为 log*-spring.xml 的配置文件
@Override
public void initialize(LoggingInitializationContext initializationContext,
String configLocation, LogFile logFile) {
if (StringUtils.hasLength(configLocation)) {
initializeWithSpecificConfig(initializationContext, configLocation, logFile);
return;
}
initializeWithConventions(initializationContext, logFile);
}
private void initializeWithSpecificConfig(
LoggingInitializationContext initializationContext, String configLocation,
LogFile logFile) {
configLocation = SystemPropertyUtils.resolvePlaceholders(configLocation);
loadConfiguration(initializationContext, configLocation, logFile);
}
private void initializeWithConventions(
LoggingInitializationContext initializationContext, LogFile logFile) {
String config = getSelfInitializationConfig();
if (config != null && logFile == null) {
// self initialization has occurred, reinitialize in case of property changes
reinitialize(initializationContext);
return;
}
if (config == null) {
config = getSpringInitializationConfig();
}
if (config != null) {
loadConfiguration(initializationContext, config, logFile);
return;
}
loadDefaults(initializationContext, logFile);
}