public LoggerStateContext determineLoggerState()

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


    public LoggerStateContext determineLoggerState() {
        final List<Logger> loggers = loggerContext.getLoggerList();
        final LoggerStateContext ctx = new LoggerStateContext(loggers, packageInfoCollector);

        // Distinguish between Logger configured via
        // 1. OSGi Config - The ones configured via ConfigAdmin
        // 2. Other means - Configured via Logback config or any other means
        for (LogConfig lc : getLogConfigs()) {
            for (String category : lc.getCategories()) {
                ctx.osgiConfiguredLoggers.put(category, lc);
            }
        }

        for (Logger targetLogger : loggers) {
            boolean hasOnlySlingRollingAppenders = true;
            Iterator<Appender<ILoggingEvent>> itr = targetLogger.iteratorForAppenders();
            while (itr.hasNext()) {
                Appender<ILoggingEvent> a = itr.next();
                if (a.getName() != null && !ctx.appenders.containsKey(a.getName())) {
                    ctx.appenders.put(a.getName(), a);
                }

                if (!(a instanceof SlingRollingFileAppender)) {
                    hasOnlySlingRollingAppenders = false;
                }
            }

            if (targetLogger.getLevel() == null) {
                continue;
            }

            boolean configuredViaOSGiConfig = ctx.osgiConfiguredLoggers.containsKey(targetLogger.getName());
            if (!configuredViaOSGiConfig || !hasOnlySlingRollingAppenders) {
                ctx.nonOSgiConfiguredLoggers.add(targetLogger);
            }
        }

        return ctx;
    }