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.spi;
18  
19  import org.apache.logging.log4j.Level;
20  import org.apache.logging.log4j.Marker;
21  import org.apache.logging.log4j.message.Message;
22  import org.apache.logging.log4j.message.MessageFactory;
23  import org.apache.logging.log4j.util.StackLocatorUtil;
24  
25  /**
26   * Wrapper class that exposes the protected AbstractLogger methods to support wrapped loggers.
27   */
28  public class ExtendedLoggerWrapper extends AbstractLogger {
29  
30      private static final long serialVersionUID = 1L;
31  
32      /**
33       * The wrapped Logger.
34       */
35      protected final ExtendedLogger logger;
36  
37      /**
38       * Constructor that wraps and existing Logger.
39       *
40       * @param logger The Logger to wrap.
41       * @param name The name of the Logger.
42       * @param messageFactory TODO
43       */
44      public ExtendedLoggerWrapper(final ExtendedLogger logger, final String name, final MessageFactory messageFactory) {
45          super(name, messageFactory);
46          this.logger = logger;
47      }
48  
49      @Override
50      public Level getLevel() {
51          return logger.getLevel();
52      }
53  
54      /**
55       * Detect if the event would be logged.
56       *
57       * @param level The logging Level to check.
58       * @param marker A Marker or null.
59       * @param message The Message.
60       * @param t A Throwable.
61       * @return true if the event would be logged for the Level, Marker, Message and Throwable, false otherwise.
62       */
63      @Override
64      public boolean isEnabled(final Level level, final Marker marker, final Message message, final Throwable t) {
65          return logger.isEnabled(level, marker, message, t);
66      }
67  
68      /**
69       * Detect if the event would be logged.
70       *
71       * @param level The logging Level to check.
72       * @param marker A Marker or null.
73       * @param message The message CharSequence.
74       * @param t A Throwable.
75       * @return true if the event would be logged for the Level, Marker, Object and Throwable, false otherwise.
76       */
77      @Override
78      public boolean isEnabled(final Level level, final Marker marker, final CharSequence message, final Throwable t) {
79          return logger.isEnabled(level, marker, message, t);
80      }
81  
82      /**
83       * Detect if the event would be logged.
84       *
85       * @param level The logging Level to check.
86       * @param marker A Marker or null.
87       * @param message The message.
88       * @param t A Throwable.
89       * @return true if the event would be logged for the Level, Marker, Object and Throwable, false otherwise.
90       */
91      @Override
92      public boolean isEnabled(final Level level, final Marker marker, final Object message, final Throwable t) {
93          return logger.isEnabled(level, marker, message, t);
94      }
95  
96      /**
97       * Detect if the event would be logged.
98       *
99       * @param level The logging Level to check.
100      * @param marker A Marker or null.
101      * @param message The message.
102      * @return true if the event would be logged for the Level, Marker, message and parameter.
103      */
104     @Override
105     public boolean isEnabled(final Level level, final Marker marker, final String message) {
106         return logger.isEnabled(level, marker, message);
107     }
108 
109     /**
110      * Detect if the event would be logged.
111      *
112      * @param level The logging Level to check.
113      * @param marker A Marker or null.
114      * @param message The message.
115      * @param params The parameters.
116      * @return true if the event would be logged for the Level, Marker, message and parameter.
117      */
118     @Override
119     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object... params) {
120         return logger.isEnabled(level, marker, message, params);
121     }
122 
123     @Override
124     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0) {
125         return logger.isEnabled(level, marker, message, p0);
126     }
127 
128     @Override
129     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
130             final Object p1) {
131         return logger.isEnabled(level, marker, message, p0, p1);
132     }
133 
134     @Override
135     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
136             final Object p1, final Object p2) {
137         return logger.isEnabled(level, marker, message, p0, p1, p2);
138     }
139 
140     @Override
141     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
142             final Object p1, final Object p2, final Object p3) {
143         return logger.isEnabled(level, marker, message, p0, p1, p2, p3);
144     }
145 
146     @Override
147     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
148             final Object p1, final Object p2, final Object p3,
149             final Object p4) {
150         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4);
151     }
152 
153     @Override
154     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
155             final Object p1, final Object p2, final Object p3,
156             final Object p4, final Object p5) {
157         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5);
158     }
159 
160     @Override
161     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
162             final Object p1, final Object p2, final Object p3,
163             final Object p4, final Object p5, final Object p6) {
164         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6);
165     }
166 
167     @Override
168     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
169             final Object p1, final Object p2, final Object p3,
170             final Object p4, final Object p5, final Object p6,
171             final Object p7) {
172         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
173     }
174 
175     @Override
176     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
177             final Object p1, final Object p2, final Object p3,
178             final Object p4, final Object p5, final Object p6,
179             final Object p7, final Object p8) {
180         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
181     }
182 
183     @Override
184     public boolean isEnabled(final Level level, final Marker marker, final String message, final Object p0,
185             final Object p1, final Object p2, final Object p3,
186             final Object p4, final Object p5, final Object p6,
187             final Object p7, final Object p8, final Object p9) {
188         return logger.isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
189     }
190 
191     /**
192      * Detect if the event would be logged.
193      *
194      * @param level The logging Level to check.
195      * @param marker A Marker or null.
196      * @param message The message.
197      * @param t A Throwable.
198      * @return true if the event would be logged for the Level, Marker, message and Throwable, false otherwise.
199      */
200     @Override
201     public boolean isEnabled(final Level level, final Marker marker, final String message, final Throwable t) {
202         return logger.isEnabled(level, marker, message, t);
203     }
204 
205     /**
206      * Always log an event. This tends to be already guarded by an enabled check, so this method should not check for
207      * the logger level again
208      *
209      * @param fqcn The fully qualified class name of the <b>caller</b>
210      * @param level The logging level
211      * @param marker The Marker
212      * @param message The Message.
213      * @param t A Throwable or null.
214      */
215     @Override
216     public void logMessage(final String fqcn, final Level level, final Marker marker, final Message message,
217             final Throwable t) {
218         if (logger instanceof LocationAwareLogger && requiresLocation()) {
219             ((LocationAwareLogger) logger).logMessage(level, marker, fqcn, StackLocatorUtil.calcLocation(fqcn),
220                 message, t);
221         }
222         logger.logMessage(fqcn, level, marker, message, t);
223     }
224 }