in log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java [319:389]
private static ConfigResult getConfig(final LastModifiedSource source,
final AuthorizationProvider authorizationProvider) {
final File inputFile = source.getFile();
InputStream inputStream = null;
HttpInputStreamUtil.Result result = null;
final long lastModified = source.getLastModified();
if (inputFile != null && inputFile.exists()) {
try {
final long modified = inputFile.lastModified();
if (modified > lastModified) {
source.setLastModified(modified);
inputStream = new FileInputStream(inputFile);
result = new HttpInputStreamUtil.Result(Status.SUCCESS);
} else {
result = new HttpInputStreamUtil.Result(Status.NOT_MODIFIED);
}
} catch (Exception ex) {
result = new HttpInputStreamUtil.Result(Status.ERROR);
}
} else if (source.getURI() != null) {
try {
result = HttpInputStreamUtil.getInputStream(source, authorizationProvider);
inputStream = result.getInputStream();
} catch (ConfigurationException ex) {
result = new HttpInputStreamUtil.Result(Status.ERROR);
}
} else {
result = new HttpInputStreamUtil.Result(Status.NOT_FOUND);
}
final ConfigResult configResult = new ConfigResult();
if (result.getStatus() == Status.SUCCESS) {
LOGGER.debug("Processing Debug key/value pairs from: {}", source.toString());
try {
final KeyValuePairConfig keyValuePairConfig = MAPPER.readValue(inputStream, KeyValuePairConfig.class);
if (keyValuePairConfig != null) {
final Map<String, String[]> configs = keyValuePairConfig.getConfigs();
if (configs != null && configs.size() > 0) {
final List<KeyValuePair> pairs = new ArrayList<>();
for (Map.Entry<String, String[]> entry : configs.entrySet()) {
final String key = entry.getKey();
for (final String value : entry.getValue()) {
if (value != null) {
pairs.add(new KeyValuePair(key, value));
} else {
LOGGER.warn("Ignoring null value for {}", key);
}
}
}
if (pairs.size() > 0) {
configResult.pairs = pairs.toArray(EMPTY_ARRAY);
configResult.status = Status.SUCCESS;
} else {
configResult.status = Status.EMPTY;
}
} else {
LOGGER.debug("No configuration data in {}", source.toString());
configResult.status = Status.EMPTY;
}
} else {
LOGGER.warn("No configs element in MutableThreadContextMapFilter configuration");
configResult.status = Status.ERROR;
}
} catch (Exception ex) {
LOGGER.warn("Invalid key/value pair configuration, input ignored: {}", ex.getMessage());
configResult.status = Status.ERROR;
}
} else {
configResult.status = result.getStatus();
}
return configResult;
}