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);
}