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
59 @PluginFactory
60 public static LevelRangeFilter createFilter(
61
62 @PluginAttribute("minLevel") final Level minLevel,
63 @PluginAttribute("maxLevel") final Level maxLevel,
64 @PluginAttribute("onMatch") final Result match,
65 @PluginAttribute("onMismatch") final Result mismatch) {
66
67 final Level actualMinLevel = minLevel == null ? Level.ERROR : minLevel;
68 final Level actualMaxLevel = maxLevel == null ? Level.ERROR : maxLevel;
69 final Result onMatch = match == null ? Result.NEUTRAL : match;
70 final Result onMismatch = mismatch == null ? Result.DENY : mismatch;
71 return new LevelRangeFilter(actualMinLevel, actualMaxLevel, onMatch, onMismatch);
72 }
73 private final Level maxLevel;
74
75 private final Level minLevel;
76
77 private LevelRangeFilter(final Level minLevel, final Level maxLevel, final Result onMatch, final Result onMismatch) {
78 super(onMatch, onMismatch);
79 this.minLevel = minLevel;
80 this.maxLevel = maxLevel;
81 }
82
83 private Result filter(final Level level) {
84 return level.isInRange(this.minLevel, this.maxLevel) ? onMatch : onMismatch;
85 }
86
87 @Override
88 public Result filter(final LogEvent event) {
89 return filter(event.getLevel());
90 }
91
92 @Override
93 public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
94 final Throwable t) {
95 return filter(level);
96 }
97
98 @Override
99 public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
100 final Throwable t) {
101 return filter(level);
102 }
103
104 @Override
105 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
106 final Object... params) {
107 return filter(level);
108 }
109
110 @Override
111 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
112 final Object p0) {
113 return filter(level);
114 }
115
116 @Override
117 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
118 final Object p0, final Object p1) {
119 return filter(level);
120 }
121
122 @Override
123 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
124 final Object p0, final Object p1, final Object p2) {
125 return filter(level);
126 }
127
128 @Override
129 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
130 final Object p0, final Object p1, final Object p2, final Object p3) {
131 return filter(level);
132 }
133
134 @Override
135 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
136 final Object p0, final Object p1, final Object p2, final Object p3,
137 final Object p4) {
138 return filter(level);
139 }
140
141 @Override
142 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
143 final Object p0, final Object p1, final Object p2, final Object p3,
144 final Object p4, final Object p5) {
145 return filter(level);
146 }
147
148 @Override
149 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
150 final Object p0, final Object p1, final Object p2, final Object p3,
151 final Object p4, final Object p5, final Object p6) {
152 return filter(level);
153 }
154
155 @Override
156 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
157 final Object p0, final Object p1, final Object p2, final Object p3,
158 final Object p4, final Object p5, final Object p6,
159 final Object p7) {
160 return filter(level);
161 }
162
163 @Override
164 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
165 final Object p0, final Object p1, final Object p2, final Object p3,
166 final Object p4, final Object p5, final Object p6,
167 final Object p7, final Object p8) {
168 return filter(level);
169 }
170
171 @Override
172 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
173 final Object p0, final Object p1, final Object p2, final Object p3,
174 final Object p4, final Object p5, final Object p6,
175 final Object p7, final Object p8, final Object p9) {
176 return filter(level);
177 }
178
179 public Level getMinLevel() {
180 return minLevel;
181 }
182
183 @Override
184 public String toString() {
185 return minLevel.toString();
186 }
187
188 }