@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(); } }
try { final Configuration prev = this.configuration; config.addListener(this);
/** * Add the spectator appender to the root logger. This method is intended to be called once * as part of the applications initialization process. * * @param registry * Spectator registry to use for the appender. * @param name * Name for the appender. * @param ignoreExceptions * If set to true then the stack trace metrics are disabled. */ public static void addToRootLogger( Registry registry, String name, boolean ignoreExceptions) { final Appender appender = new SpectatorAppender(registry, name, null, null, ignoreExceptions); appender.start(); LoggerContext context = (LoggerContext) LogManager.getContext(false); Configuration config = context.getConfiguration(); addToRootLogger(appender); config.addListener(reconfigurable -> addToRootLogger(appender)); }