1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender.routing;
18
19 import org.apache.logging.log4j.Logger;
20 import org.apache.logging.log4j.core.config.Node;
21 import org.apache.logging.log4j.core.config.plugins.Plugin;
22 import org.apache.logging.log4j.core.config.plugins.PluginAttr;
23 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
24 import org.apache.logging.log4j.core.config.plugins.PluginNode;
25 import org.apache.logging.log4j.status.StatusLogger;
26
27
28
29
30 @Plugin(name = "Route", type = "Core", printObject = true, deferChildren = true)
31 public final class Route {
32 private static final Logger LOGGER = StatusLogger.getLogger();
33
34 private final Node node;
35 private final String appenderRef;
36 private final String key;
37
38 private Route(Node node, String appenderRef, String key) {
39 this.node = node;
40 this.appenderRef = appenderRef;
41 this.key = key;
42 }
43
44
45
46
47
48 public Node getNode() {
49 return node;
50 }
51
52
53
54
55
56 public String getAppenderRef() {
57 return appenderRef;
58 }
59
60
61
62
63
64 public String getKey() {
65 return key;
66 }
67
68 @Override
69 public String toString() {
70 StringBuilder sb = new StringBuilder("Route(");
71 sb.append("type=");
72 if (appenderRef != null) {
73 sb.append("static Reference=").append(appenderRef);
74 } else {
75 sb.append("dynamic");
76 }
77 if (key != null) {
78 sb.append(" key='").append(key).append("'");
79 } else {
80 sb.append(" default");
81 }
82 sb.append(")");
83 return sb.toString();
84 }
85
86
87
88
89
90
91
92
93 @PluginFactory
94 public static Route createRoute(@PluginAttr("ref") String appenderRef,
95 @PluginAttr("key") String key,
96 @PluginNode Node node) {
97 if (node != null && node.hasChildren()) {
98 for (Node child : node.getChildren()) {
99
100 }
101 if (appenderRef != null) {
102 LOGGER.error("A route cannot be configured with an appender reference and an appender definition");
103 return null;
104 }
105 } else {
106 if (appenderRef == null) {
107 LOGGER.error("A route must specify an appender reference or an appender definition");
108 return null;
109 }
110 }
111 return new Route(node, appenderRef, key);
112 }
113 }