private void fallbackConfiguration()

in src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java [1504:1528]


    private void fallbackConfiguration(LoggerContext lc, Model failsafeTop) {
        JoranConfigurator joranConfigurator = new JoranConfiguratorWrapper(this);
        joranConfigurator.setContext(context);
        ConfigurationWatchList oldCWL = ConfigurationWatchListUtil.getConfigurationWatchList(context);
        ConfigurationWatchList newCWL = oldCWL.buildClone();

        if (failsafeTop == null) {
            addWarn("No previous configuration to fall back on.");
        } else {
            addWarn("Given previous errors, falling back to previously registered safe configuration.");
            addInfo("Safe model " + failsafeTop);
            try {
                lc.reset();
                ConfigurationWatchListUtil.registerConfigurationWatchList(context, newCWL);
                ModelUtil.resetForReuse(failsafeTop);
                joranConfigurator.processModel(failsafeTop);
                addInfo("Re-registering previous fallback configuration once more as a fallback configuration point");
                joranConfigurator.registerSafeConfiguration(failsafeTop);
                context.fireConfigurationEvent(newConfigurationEndedSuccessfullyEvent(this));
                addInfo("after registerSafeConfiguration");
            } catch (Exception e) {
                addError("Unexpected exception thrown by a configuration considered safe.", e);
            }
        }
    }