package org.apache.logging.log4j.core.config.yaml;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Order;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.util.Loader;
@Plugin(name = "YamlConfigurationFactory", category = ConfigurationFactory.CATEGORY)
@Order(7)
public class YamlConfigurationFactory extends ConfigurationFactory {
private static final String[] SUFFIXES = new String[] {".yml", ".yaml"};
private static final String[] dependencies = new String[] {
"com.fasterxml.jackson.databind.ObjectMapper",
"com.fasterxml.jackson.databind.JsonNode",
"com.fasterxml.jackson.core.JsonParser",
"com.fasterxml.jackson.dataformat.yaml.YAMLFactory"
};
private final boolean isActive;
public YamlConfigurationFactory() {
for (final String dependency : dependencies) {
if (!Loader.isClassAvailable(dependency)) {
LOGGER.debug("Missing dependencies for Yaml support, ConfigurationFactory {} is inactive", getClass().getName());
isActive = false;
return;
}
}
isActive = true;
}
@Override
protected boolean isActive() {
return isActive;
}
@Override
public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
if (!isActive) {
return null;
}
return new YamlConfiguration(loggerContext, source);
}
@Override
public String[] getSupportedTypes() {
return SUFFIXES;
}
}