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