1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.jmx;
18
19 import java.util.List;
20
21 import javax.management.ObjectName;
22
23 import org.apache.logging.log4j.Level;
24 import org.apache.logging.log4j.core.LoggerContext;
25 import org.apache.logging.log4j.core.config.AppenderRef;
26 import org.apache.logging.log4j.core.config.LoggerConfig;
27 import org.apache.logging.log4j.core.util.Assert;
28
29
30
31
32 public class LoggerConfigAdmin implements LoggerConfigAdminMBean {
33
34 private final LoggerContext loggerContext;
35 private final LoggerConfig loggerConfig;
36 private final ObjectName objectName;
37
38
39
40
41
42
43
44
45 public LoggerConfigAdmin(final LoggerContext loggerContext, final LoggerConfig loggerConfig) {
46
47 this.loggerContext = Assert.requireNonNull(loggerContext, "loggerContext");
48 this.loggerConfig = Assert.requireNonNull(loggerConfig, "loggerConfig");
49 try {
50 final String ctxName = Server.escape(loggerContext.getName());
51 final String configName = Server.escape(loggerConfig.getName());
52 final String name = String.format(PATTERN, ctxName, configName);
53 objectName = new ObjectName(name);
54 } catch (final Exception e) {
55 throw new IllegalStateException(e);
56 }
57 }
58
59
60
61
62
63
64
65 public ObjectName getObjectName() {
66 return objectName;
67 }
68
69 @Override
70 public String getName() {
71 return loggerConfig.getName();
72 }
73
74 @Override
75 public String getLevel() {
76 return loggerConfig.getLevel().name();
77 }
78
79 @Override
80 public void setLevel(final String level) {
81 loggerConfig.setLevel(Level.getLevel(level));
82 loggerContext.updateLoggers();
83 }
84
85 @Override
86 public boolean isAdditive() {
87 return loggerConfig.isAdditive();
88 }
89
90 @Override
91 public void setAdditive(final boolean additive) {
92 loggerConfig.setAdditive(additive);
93 loggerContext.updateLoggers();
94 }
95
96 @Override
97 public boolean isIncludeLocation() {
98 return loggerConfig.isIncludeLocation();
99 }
100
101 @Override
102 public String getFilter() {
103 return String.valueOf(loggerConfig.getFilter());
104 }
105
106 @Override
107 public String[] getAppenderRefs() {
108 final List<AppenderRef> refs = loggerConfig.getAppenderRefs();
109 final String[] result = new String[refs.size()];
110 for (int i = 0; i < result.length; i++) {
111 result[i] = refs.get(i).getRef();
112 }
113 return result;
114 }
115 }