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.LogEvent;
22 import org.apache.logging.log4j.core.Logger;
23 import org.apache.logging.log4j.core.config.plugins.Plugin;
24 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
25 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
26 import org.apache.logging.log4j.message.Message;
27
28
29
30
31
32
33 @Plugin(name = "MarkerFilter", category = "Core", elementType = "filter", printObject = true)
34 public final class MarkerFilter extends AbstractFilter {
35
36 private final String name;
37
38 private MarkerFilter(final String name, final Result onMatch, final Result onMismatch) {
39 super(onMatch, onMismatch);
40 this.name = name;
41 }
42
43 @Override
44 public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
45 final Object... params) {
46 return filter(marker);
47 }
48
49 @Override
50 public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
51 final Throwable t) {
52 return filter(marker);
53 }
54
55 @Override
56 public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
57 final Throwable t) {
58 return filter(marker);
59 }
60
61 @Override
62 public Result filter(final LogEvent event) {
63 return filter(event.getMarker());
64 }
65
66 private Result filter(final Marker marker) {
67 return marker != null && marker.isInstanceOf(name) ? onMatch : onMismatch;
68 }
69
70 @Override
71 public String toString() {
72 return name;
73 }
74
75
76
77
78
79
80
81
82 @PluginFactory
83 public static MarkerFilter createFilter(
84 @PluginAttribute("marker") final String marker,
85 @PluginAttribute("onMatch") final String match,
86 @PluginAttribute("onMismatch") final String mismatch) {
87
88 if (marker == null) {
89 LOGGER.error("A marker must be provided for MarkerFilter");
90 return null;
91 }
92 final Result onMatch = Result.toResult(match);
93 final Result onMismatch = Result.toResult(mismatch);
94 return new MarkerFilter(marker, onMatch, onMismatch);
95 }
96
97 }