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