1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.filter;
18
19 import org.apache.logging.log4j.Level;
20 import org.apache.logging.log4j.Marker;
21 import org.apache.logging.log4j.core.Filter;
22 import org.apache.logging.log4j.core.LogEvent;
23 import org.apache.logging.log4j.core.Logger;
24 import org.apache.logging.log4j.core.config.Node;
25 import org.apache.logging.log4j.core.config.plugins.Plugin;
26 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
27 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
28 import org.apache.logging.log4j.message.Message;
29 import org.apache.logging.log4j.util.PerformanceSensitive;
30
31
32
33
34
35
36
37
38
39
40
41 @Plugin(name = "LevelRangeFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
42 @PerformanceSensitive("allocation")
43 public final class LevelRangeFilter extends AbstractFilter {
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 @PluginFactory
59 public static LevelRangeFilter createFilter(
60
61 @PluginAttribute("minLevel") final Level minLevel,
62 @PluginAttribute("maxLevel") final Level maxLevel,
63 @PluginAttribute("onMatch") final Result match,
64 @PluginAttribute("onMismatch") final Result mismatch) {
65
66 final Level actualMinLevel = minLevel == null ? Level.ERROR : minLevel;
67 final Level actualMaxLevel = maxLevel == null ? Level.ERROR : maxLevel;
68 final Result onMatch = match == null ? Result.NEUTRAL : match;
69 final Result onMismatch = mismatch == null ? Result.DENY : mismatch;
70 return new LevelRangeFilter(actualMinLevel, actualMaxLevel, onMatch, onMismatch);
71 }
72 private final Level maxLevel;
73
74 private final Level minLevel;
75
76 private LevelRangeFilter(final Level minLevel, final Level maxLevel, final Result onMatch, final Result onMismatch) {
77 super(onMatch, onMismatch);
78 this.minLevel = minLevel;
79 this.maxLevel = maxLevel;
80 }
81
82 private Result filter(final Level level) {
83 return level.isInRange(this.minLevel, this.maxLevel) ? onMatch : onMismatch;
84 }
85
86 @Override
87 public Result filter(final LogEvent event) {
88 return filter(event.getLevel());
89 }
90
91 @Override
92 public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
93 final Throwable t) {
94 return filter(level);
95 }
96
97 @Override
98 public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
99 final Throwable t) {
100 return filter(level);
101 }
102
103 @Override
104 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
105 final Object... params) {
106 return filter(level);
107 }
108
109 @Override
110 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
111 final Object p0) {
112 return filter(level);
113 }
114
115 @Override
116 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
117 final Object p0, final Object p1) {
118 return filter(level);
119 }
120
121 @Override
122 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
123 final Object p0, final Object p1, final Object p2) {
124 return filter(level);
125 }
126
127 @Override
128 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
129 final Object p0, final Object p1, final Object p2, final Object p3) {
130 return filter(level);
131 }
132
133 @Override
134 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
135 final Object p0, final Object p1, final Object p2, final Object p3,
136 final Object p4) {
137 return filter(level);
138 }
139
140 @Override
141 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
142 final Object p0, final Object p1, final Object p2, final Object p3,
143 final Object p4, final Object p5) {
144 return filter(level);
145 }
146
147 @Override
148 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
149 final Object p0, final Object p1, final Object p2, final Object p3,
150 final Object p4, final Object p5, final Object p6) {
151 return filter(level);
152 }
153
154 @Override
155 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
156 final Object p0, final Object p1, final Object p2, final Object p3,
157 final Object p4, final Object p5, final Object p6,
158 final Object p7) {
159 return filter(level);
160 }
161
162 @Override
163 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
164 final Object p0, final Object p1, final Object p2, final Object p3,
165 final Object p4, final Object p5, final Object p6,
166 final Object p7, final Object p8) {
167 return filter(level);
168 }
169
170 @Override
171 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
172 final Object p0, final Object p1, final Object p2, final Object p3,
173 final Object p4, final Object p5, final Object p6,
174 final Object p7, final Object p8, final Object p9) {
175 return filter(level);
176 }
177
178 public Level getMinLevel() {
179 return minLevel;
180 }
181
182 @Override
183 public String toString() {
184 return minLevel.toString();
185 }
186
187 }