protected void maybeDetachAppender()

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


    protected void maybeDetachAppender(
            @NotNull AppenderOrigin origin, @NotNull String appenderName, @NotNull Logger targetLogger) {
        Appender<ILoggingEvent> appender = targetLogger.getAppender(appenderName);
        if (appender != null) {
            String loggerName = targetLogger.getName();
            addInfo(String.format("detaching appender %s for %s", appenderName, loggerName));
            targetLogger.detachAppender(appenderName);

            // notify the filter tracker about the appender so it
            //  possibly detach the filter as well
            if (filterTracker != null) {
                filterTracker.detachedAppender(appender);
            }

            // forget what loggers we detached the appender from
            synchronized (appendersByOrigin) {
                Map<String, Set<String>> map = appendersByOrigin.getOrDefault(origin, Collections.emptyMap());
                Set<String> loggerNamesSet = map.get(appenderName);
                if (loggerNamesSet != null) {
                    loggerNamesSet.remove(loggerName);
                    if (loggerNamesSet.isEmpty()) {
                        map.remove(appenderName);
                    }
                }
            }
        }
    }