View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements. See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache license, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License. You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the license for the specific language governing permissions and
15   * limitations under the license.
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.PluginBuilderFactory;
27  import org.apache.logging.log4j.message.Message;
28  
29  import org.apache.logging.log4j.util.PerformanceSensitive;
30  
31  /**
32   * This filter returns the onMatch result if there is no marker in the LogEvent.
33   */
34  @Plugin(name = "NoMarkerFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
35  @PerformanceSensitive("allocation")
36  public final class NoMarkerFilter extends AbstractFilter {
37  
38      private NoMarkerFilter(final Result onMatch, final Result onMismatch) {
39          super(onMatch, onMismatch);
40      }
41  
42      @Override
43      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
44                           final Object... params) {
45          return filter(marker);
46      }
47  
48      @Override
49      public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
50                           final Throwable t) {
51          return filter(marker);
52      }
53  
54      @Override
55      public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
56                           final Throwable t) {
57          return filter(marker);
58      }
59  
60      @Override
61      public Result filter(final LogEvent event) {
62          return filter(event.getMarker());
63      }
64  
65      @Override
66      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
67                           final Object p0) {
68          return filter(marker);
69      }
70  
71      @Override
72      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
73                           final Object p0, final Object p1) {
74          return filter(marker);
75      }
76  
77      @Override
78      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
79                           final Object p0, final Object p1, final Object p2) {
80          return filter(marker);
81      }
82  
83      @Override
84      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
85                           final Object p0, final Object p1, final Object p2, final Object p3) {
86          return filter(marker);
87      }
88  
89      @Override
90      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
91                           final Object p0, final Object p1, final Object p2, final Object p3,
92                           final Object p4) {
93          return filter(marker);
94      }
95  
96      @Override
97      public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
98                           final Object p0, final Object p1, final Object p2, final Object p3,
99                           final Object p4, final Object p5) {
100         return filter(marker);
101     }
102 
103     @Override
104     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
105                          final Object p0, final Object p1, final Object p2, final Object p3,
106                          final Object p4, final Object p5, final Object p6) {
107         return filter(marker);
108     }
109 
110     @Override
111     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
112                          final Object p0, final Object p1, final Object p2, final Object p3,
113                          final Object p4, final Object p5, final Object p6,
114                          final Object p7) {
115         return filter(marker);
116     }
117 
118     @Override
119     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
120                          final Object p0, final Object p1, final Object p2, final Object p3,
121                          final Object p4, final Object p5, final Object p6,
122                          final Object p7, final Object p8) {
123         return filter(marker);
124     }
125 
126     @Override
127     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
128                          final Object p0, final Object p1, final Object p2, final Object p3,
129                          final Object p4, final Object p5, final Object p6,
130                          final Object p7, final Object p8, final Object p9) {
131         return filter(marker);
132     }
133 
134     private Result filter(final Marker marker) {
135         return null == marker ? onMatch : onMismatch;
136     }
137 
138 
139     @PluginBuilderFactory
140     public static Builder newBuilder() {
141         return new Builder();
142     }
143 
144     public static class Builder extends AbstractFilterBuilder<Builder> implements org.apache.logging.log4j.core.util.Builder<NoMarkerFilter> {
145 
146         @Override
147         public NoMarkerFilter build() {
148             return new NoMarkerFilter(this.getOnMatch(), this.getOnMismatch());
149         }
150     }
151 }