private List parseLoggers()

in log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v1/PropertiesV1ConfigurationParser.java [122:156]


    private List<ConfigurationNode> parseLoggers(PropertiesSubset globalProperties) {
        List<ConfigurationNode> loggers = new ArrayList<>();
        Map<String, LoggerConfig> loggerConfigs = new HashMap<>();
        // Handle `log4j.logger`
        extractSubset(globalProperties, LOGGER_PREFIX)
                .getProperties()
                .forEach((key, levelAndRefs) -> loggerConfigs.compute((String) key, (name, oldConfig) -> {
                    LoggerConfig config = new LoggerConfig(name);
                    config.setLevelAndRefs((String) levelAndRefs);
                    return config;
                }));
        // Handler `log4j.catetory`
        extractSubset(globalProperties, CATEGORY_PREFIX)
                .getProperties()
                .forEach((key, levelAndRefs) -> loggerConfigs.compute((String) key, (name, oldConfig) -> {
                    if (oldConfig != null) {
                        throw new ConfigurationConverterException(String.format(
                                "Configuration file contains both a '%s.%s' and '%s.%s' key.",
                                LOGGER_PREFIX, key, CATEGORY_PREFIX, key));
                    }
                    LoggerConfig config = new LoggerConfig(name);
                    config.setLevelAndRefs((String) levelAndRefs);
                    return config;
                }));
        // Handle `log4j.additivity`
        extractSubset(globalProperties, ADDITIVITY_PREFIX)
                .getProperties()
                .forEach((key, additivity) -> loggerConfigs.compute((String) key, (name, oldConfig) -> {
                    LoggerConfig config = oldConfig != null ? oldConfig : new LoggerConfig(name);
                    config.setAdditivity((String) additivity);
                    return config;
                }));
        loggerConfigs.values().stream().map(LoggerConfig::buildLogger).forEach(loggers::add);
        return loggers;
    }