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