1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config.yaml;
18
19 import org.apache.logging.log4j.core.LoggerContext;
20 import org.apache.logging.log4j.core.config.Configuration;
21 import org.apache.logging.log4j.core.config.ConfigurationFactory;
22 import org.apache.logging.log4j.core.config.ConfigurationSource;
23 import org.apache.logging.log4j.core.config.Order;
24 import org.apache.logging.log4j.core.config.plugins.Plugin;
25 import org.apache.logging.log4j.core.util.Loader;
26
27 @Plugin(name = "YamlConfigurationFactory", category = ConfigurationFactory.CATEGORY)
28 @Order(7)
29 public class YamlConfigurationFactory extends ConfigurationFactory {
30
31
32
33
34 private static final String[] SUFFIXES = new String[] {".yml", ".yaml"};
35
36 private static final String[] dependencies = new String[] {
37 "com.fasterxml.jackson.databind.ObjectMapper",
38 "com.fasterxml.jackson.databind.JsonNode",
39 "com.fasterxml.jackson.core.JsonParser",
40 "com.fasterxml.jackson.dataformat.yaml.YAMLFactory"
41 };
42
43 private final boolean isActive;
44
45 public YamlConfigurationFactory() {
46 for (final String dependency : dependencies) {
47 if (!Loader.isClassAvailable(dependency)) {
48 LOGGER.debug("Missing dependencies for Yaml support, ConfigurationFactory {} is inactive", getClass().getName());
49 isActive = false;
50 return;
51 }
52 }
53 isActive = true;
54 }
55
56 @Override
57 protected boolean isActive() {
58 return isActive;
59 }
60
61 @Override
62 public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
63 if (!isActive) {
64 return null;
65 }
66 return new YamlConfiguration(loggerContext, source);
67 }
68
69 @Override
70 public String[] getSupportedTypes() {
71 return SUFFIXES;
72 }
73
74 }