外层的实现,实现调用方,可以通过送 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);
}