1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.decima.module.logging;
28
29 import org.apache.logging.log4j.Level;
30 import org.apache.logging.log4j.LogManager;
31 import org.apache.logging.log4j.core.LoggerContext;
32 import org.apache.logging.log4j.core.config.Configuration;
33 import org.apache.logging.log4j.core.config.ConfigurationFactory;
34 import org.apache.logging.log4j.core.config.ConfigurationSource;
35 import org.apache.logging.log4j.core.config.LoggerConfig;
36 import org.apache.logging.log4j.core.config.Order;
37 import org.apache.logging.log4j.core.config.plugins.Plugin;
38 import org.apache.logging.log4j.core.config.xml.XmlConfiguration;
39
40 @Plugin(name = "DecimaLoggingConfigurationFactory", category = "ConfigurationFactory")
41 @Order(10)
42 public class DecimaLoggingConfigurationFactory
43 extends ConfigurationFactory {
44
45
46
47
48
49
50
51 public static void changeRootLogLevel(Level logLevel) {
52
53 final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
54 final Configuration config = ctx.getConfiguration();
55
56 config.getRootLogger().setLevel(logLevel);
57 ctx.updateLoggers();
58 }
59
60
61
62
63 public static final String[] SUFFIXES = new String[] { ".xml", "*" };
64
65 private Level logLevel = Level.INFO;
66
67 public Level getLogLevel() {
68 return logLevel;
69 }
70
71 public void setLogLevel(Level logLevel) {
72 this.logLevel = logLevel;
73 }
74
75 @Override
76 public Configuration getConfiguration(LoggerContext loggerContext, ConfigurationSource source) {
77 return new DecimaXmlConfiguration(loggerContext, source);
78 }
79
80 @Override
81 protected String[] getSupportedTypes() {
82 return SUFFIXES;
83 }
84
85 public class DecimaXmlConfiguration
86 extends XmlConfiguration {
87
88
89 @SuppressWarnings("unused")
90 private static final long serialVersionUID = 1L;
91
92 public DecimaXmlConfiguration(LoggerContext loggerContext, ConfigurationSource configSource) {
93 super(loggerContext, configSource);
94 }
95
96 @Override
97 protected void doConfigure() {
98 super.doConfigure();
99
100
101 LoggerConfig rootConfig = getRootLogger();
102 rootConfig.setLevel(getLogLevel());
103 }
104 }
105 }