protected void addOrUpdateAppender()

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


    protected void addOrUpdateAppender(
            @NotNull AppenderOrigin origin,
            @NotNull String appenderName,
            @NotNull Appender<ILoggingEvent> appender,
            @NotNull Collection<String> loggers) {
        // detach any values from a previous call so we don't get duplicates
        Map<String, Set<String>> appenderNameToLoggerNamesMap =
                appendersByOrigin.getOrDefault(origin, Collections.emptyMap());
        Set<String> loggerNamesSet =
                new HashSet<>(appenderNameToLoggerNamesMap.getOrDefault(appenderName, Collections.emptySet()));
        for (String loggerName : loggerNamesSet) {
            Logger targetLogger = (Logger) LoggerFactory.getLogger(loggerName);
            maybeDetachAppender(origin, appenderName, targetLogger);
        }

        appender.setContext(loggerContext);
        appender.setName(appenderName);
        appender.start();

        for (String loggerName : loggers) {
            Logger targetLogger = (Logger) LoggerFactory.getLogger(loggerName);

            addInfo(String.format("attaching appender %s for %s", appenderName, targetLogger.getName()));

            targetLogger.addAppender(appender);
        }

        // remember what loggers we attached the appender to
        addedAppenderRef(origin, appenderName, loggers);
    }