1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config.json;
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 = "JsonConfigurationFactory", category = ConfigurationFactory.CATEGORY)
28 @Order(6)
29 public class JsonConfigurationFactory extends ConfigurationFactory {
30
31
32
33
34 private static final String[] SUFFIXES = new String[] {".json", ".jsn"};
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 };
41
42 private final boolean isActive;
43
44 public JsonConfigurationFactory() {
45 for (final String dependency : dependencies) {
46 if (!Loader.isClassAvailable(dependency)) {
47 LOGGER.debug("Missing dependencies for Json support, ConfigurationFactory {} is inactive", getClass().getName());
48 isActive = false;
49 return;
50 }
51 }
52 isActive = true;
53 }
54
55 @Override
56 protected boolean isActive() {
57 return isActive;
58 }
59
60 @Override
61 public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
62 if (!isActive) {
63 return null;
64 }
65 return new JsonConfiguration(loggerContext, source);
66 }
67
68 @Override
69 public String[] getSupportedTypes() {
70 return SUFFIXES;
71 }
72 }