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.PluginBuilderAttribute;
28 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
29 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
30 import org.apache.logging.log4j.message.Message;
31 import org.apache.logging.log4j.util.PerformanceSensitive;
32
33
34
35
36
37 @Plugin(name = "LevelMatchFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
38 @PerformanceSensitive("allocation")
39 public final class LevelMatchFilter extends AbstractFilter {
40
41 public static final String ATTR_MATCH = "match";
42 private final Level level;
43
44 private LevelMatchFilter(final Level level, final Result onMatch, final Result onMismatch) {
45 super(onMatch, onMismatch);
46 this.level = level;
47 }
48
49 @Override
50 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
51 final Object... params) {
52 return filter(level);
53 }
54
55 @Override
56 public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
57 final Throwable t) {
58 return filter(level);
59 }
60
61 @Override
62 public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
63 final Throwable t) {
64 return filter(level);
65 }
66
67 @Override
68 public Result filter(final LogEvent event) {
69 return filter(event.getLevel());
70 }
71
72 private Result filter(final Level level) {
73 return level == this.level ? onMatch : onMismatch;
74 }
75
76 @Override
77 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
78 final Object p0) {
79 return filter(level);
80 }
81
82 @Override
83 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
84 final Object p0, final Object p1) {
85 return filter(level);
86 }
87
88 @Override
89 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
90 final Object p0, final Object p1, final Object p2) {
91 return filter(level);
92 }
93
94 @Override
95 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
96 final Object p0, final Object p1, final Object p2, final Object p3) {
97 return filter(level);
98 }
99
100 @Override
101 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
102 final Object p0, final Object p1, final Object p2, final Object p3,
103 final Object p4) {
104 return filter(level);
105 }
106
107 @Override
108 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
109 final Object p0, final Object p1, final Object p2, final Object p3,
110 final Object p4, final Object p5) {
111 return filter(level);
112 }
113
114 @Override
115 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
116 final Object p0, final Object p1, final Object p2, final Object p3,
117 final Object p4, final Object p5, final Object p6) {
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, final Object p3,
124 final Object p4, final Object p5, final Object p6,
125 final Object p7) {
126 return filter(level);
127 }
128
129 @Override
130 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
131 final Object p0, final Object p1, final Object p2, final Object p3,
132 final Object p4, final Object p5, final Object p6,
133 final Object p7, final Object p8) {
134 return filter(level);
135 }
136
137 @Override
138 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
139 final Object p0, final Object p1, final Object p2, final Object p3,
140 final Object p4, final Object p5, final Object p6,
141 final Object p7, final Object p8, final Object p9) {
142 return filter(level);
143 }
144
145 @Override
146 public String toString() {
147 return level.toString();
148 }
149
150 @PluginBuilderFactory
151 public static LevelMatchFilter.Builder newBuilder() {
152 return new LevelMatchFilter.Builder();
153 }
154
155 public static class Builder extends AbstractFilterBuilder<LevelMatchFilter.Builder> implements org.apache.logging.log4j.core.util.Builder<LevelMatchFilter> {
156 @PluginBuilderAttribute
157 private Level level = Level.ERROR;
158
159
160
161
162
163
164 public LevelMatchFilter.Builder setLevel(final Level level) {
165 this.level = level;
166 return this;
167 }
168
169 @Override
170 public LevelMatchFilter build() {
171 return new LevelMatchFilter(this.level, this.getOnMatch(), this.getOnMismatch());
172 }
173 }
174
175 }