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
28
29
30 @Plugin(name = "JsonConfigurationFactory", category = ConfigurationFactory.CATEGORY)
31 @Order(6)
32 public class JsonConfigurationFactory extends ConfigurationFactory {
33
34
35
36
37 private static final String[] SUFFIXES = new String[] {".json", ".jsn"};
38
39 private static final String[] dependencies = new String[] {
40 "com.fasterxml.jackson.databind.ObjectMapper",
41 "com.fasterxml.jackson.databind.JsonNode",
42 "com.fasterxml.jackson.core.JsonParser"
43 };
44
45 private final boolean isActive;
46
47 public JsonConfigurationFactory() {
48 for (final String dependency : dependencies) {
49 if (!Loader.isClassAvailable(dependency)) {
50 LOGGER.debug("Missing dependencies for Json support");
51 isActive = false;
52 return;
53 }
54 }
55 isActive = true;
56 }
57
58 @Override
59 protected boolean isActive() {
60 return isActive;
61 }
62
63 @Override
64 public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
65 if (!isActive) {
66 return null;
67 }
68 return new JsonConfiguration(loggerContext, source);
69 }
70
71 @Override
72 public String[] getSupportedTypes() {
73 return SUFFIXES;
74 }
75 }