@SneakyThrows
private static Optional<Pair<Resource, LoggerContext>> buildLoggerContext(final Environment environment, final ResourceLoader
resourceLoader) {
val logFile = environment.getProperty("logging.config", "classpath:/log4j2.xml");
LOGGER.info("Located logging configuration reference in the environment as [{}]", logFile);
if (ResourceUtils.doesResourceExist(logFile, resourceLoader)) {
val logConfigurationFile = resourceLoader.getResource(logFile);
LOGGER.trace("Loaded logging configuration resource [{}]. Initializing logger context...", logConfigurationFile);
val loggerContext = Configurator.initialize("CAS", null, logConfigurationFile.getURI());
LOGGER.trace("Installing log configuration listener to detect changes and update");
loggerContext.getConfiguration().addListener(reconfigurable -> loggerContext.updateLoggers(reconfigurable.reconfigure()));
return Optional.of(Pair.of(logConfigurationFile, loggerContext));
}
LOGGER.warn("Logging configuration cannot be found in the environment settings");
return Optional.empty();
}
}