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
30
31
32
33
34
35
36
37
38
39 @Plugin(name = "LevelRangeFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
40 public final class LevelRangeFilter extends AbstractFilter {
41
42 private static final long serialVersionUID = 1L;
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 @PluginFactory
58 public static LevelRangeFilter createFilter(
59
60 @PluginAttribute("minLevel") final Level minLevel,
61 @PluginAttribute("maxLevel") final Level maxLevel,
62 @PluginAttribute("onMatch") final Result match,
63 @PluginAttribute("onMismatch") final Result mismatch) {
64
65 final Level actualMinLevel = minLevel == null ? Level.ERROR : minLevel;
66 final Level actualMaxLevel = minLevel == null ? Level.ERROR : maxLevel;
67 final Result onMatch = match == null ? Result.NEUTRAL : match;
68 final Result onMismatch = mismatch == null ? Result.DENY : mismatch;
69 return new LevelRangeFilter(actualMinLevel, actualMaxLevel, onMatch, onMismatch);
70 }
71 private final Level maxLevel;
72
73 private final Level minLevel;
74
75 private LevelRangeFilter(final Level minLevel, final Level maxLevel, final Result onMatch, final Result onMismatch) {
76 super(onMatch, onMismatch);
77 this.minLevel = minLevel;
78 this.maxLevel = maxLevel;
79 }
80
81 private Result filter(final Level level) {
82 return level.isInRange(this.minLevel, this.maxLevel) ? onMatch : onMismatch;
83 }
84
85 @Override
86 public Result filter(final LogEvent event) {
87 return filter(event.getLevel());
88 }
89
90 @Override
91 public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
92 final Throwable t) {
93 return filter(level);
94 }
95
96 @Override
97 public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
98 final Throwable t) {
99 return filter(level);
100 }
101
102 @Override
103 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
104 final Object... params) {
105 return filter(level);
106 }
107
108 public Level getMinLevel() {
109 return minLevel;
110 }
111
112 @Override
113 public String toString() {
114 return minLevel.toString();
115 }
116
117 }