1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config;
18
19 import org.apache.logging.log4j.Level;
20 import org.apache.logging.log4j.Logger;
21 import org.apache.logging.log4j.core.Filter;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.config.plugins.PluginAttr;
24 import org.apache.logging.log4j.core.config.plugins.PluginElement;
25 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
26 import org.apache.logging.log4j.status.StatusLogger;
27
28
29
30
31 @Plugin(name = "appender-ref", category = "Core", printObject = true)
32 public final class AppenderRef {
33 private static final Logger LOGGER = StatusLogger.getLogger();
34
35 private final String ref;
36 private final Level level;
37 private final Filter filter;
38
39 private AppenderRef(final String ref, final Level level, final Filter filter) {
40 this.ref = ref;
41 this.level = level;
42 this.filter = filter;
43 }
44
45 public String getRef() {
46 return ref;
47 }
48
49 public Level getLevel() {
50 return level;
51 }
52
53 public Filter getFilter() {
54 return filter;
55 }
56
57
58
59
60
61
62
63
64 @PluginFactory
65 public static AppenderRef createAppenderRef(@PluginAttr("ref") final String ref,
66 @PluginAttr("level") final String levelName,
67 @PluginElement("filters") final Filter filter) {
68
69 if (ref == null) {
70 LOGGER.error("Appender references must contain a reference");
71 return null;
72 }
73 Level level = null;
74
75 if (levelName != null) {
76 level = Level.toLevel(levelName, null);
77 if (level == null) {
78 LOGGER.error("Invalid level " + levelName + " on Appender reference " + ref);
79 }
80 }
81
82 return new AppenderRef(ref, level, filter);
83 }
84 }