View Javadoc
1   package org.apache.commons.jcs3.log;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one or more
5    * contributor license agreements. See the NOTICE file distributed with
6    * this work for additional information regarding copyright ownership.
7    * The ASF licenses this file to You under the Apache license, Version 2.0
8    * (the "License"); you may not use this file except in compliance with
9    * the License. You may obtain a copy of the License at
10   *
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the license for the specific language governing permissions and
17   * limitations under the license.
18   */
19  
20  import java.util.function.Supplier;
21  
22  import org.apache.logging.log4j.Level;
23  import org.apache.logging.log4j.Logger;
24  
25  /**
26   * This is a wrapper around the <code>org.apache.logging.log4j.Logger</code> implementing our own
27   * <code>Log</code> interface.
28   */
29  public class Log4j2LogAdapter implements Log
30  {
31      private final Logger logger;
32  
33      /**
34       * Construct a Log4j Logger wrapper
35       *
36       * @param logger the log4j Logger
37       */
38      public Log4j2LogAdapter(final Logger logger)
39      {
40          this.logger = logger;
41      }
42  
43      private void log(final Level level, final String message, final Supplier<?>... paramSuppliers)
44      {
45          if (logger.isEnabled(level))
46          {
47              if (paramSuppliers == null)
48              {
49                  logger.log(level, message);
50              }
51              else
52              {
53                  switch (paramSuppliers.length)
54                  {
55                      case 1: logger.log(level, message, paramSuppliers[0].get());
56                              break;
57                      case 2: logger.log(level, message, paramSuppliers[0].get(),
58                              paramSuppliers[1].get());
59                              break;
60                      case 3: logger.log(level, message, paramSuppliers[0].get(),
61                              paramSuppliers[1].get(), paramSuppliers[2].get());
62                              break;
63                      case 4: logger.log(level, message, paramSuppliers[0].get(),
64                              paramSuppliers[1].get(), paramSuppliers[2].get(),
65                              paramSuppliers[3].get());
66                              break;
67                      case 5: logger.log(level, message, paramSuppliers[0].get(),
68                              paramSuppliers[1].get(), paramSuppliers[2].get(),
69                              paramSuppliers[3].get(), paramSuppliers[4].get());
70                              break;
71                      default: logger.log(level, message, paramSuppliers[0].get(),
72                              paramSuppliers[1].get(), paramSuppliers[2].get(),
73                              paramSuppliers[3].get(), paramSuppliers[4].get(),
74                              paramSuppliers[5].get());
75                              break;
76                  }
77              }
78          }
79      }
80  
81      /**
82       * Logs a message object with the DEBUG level.
83       *
84       * @param message the message string to log.
85       */
86      @Override
87      public void debug(final String message)
88      {
89          logger.debug(message);
90      }
91  
92      /**
93       * Logs a message object with the DEBUG level.
94       *
95       * @param message the message object to log.
96       */
97      @Override
98      public void debug(final Object message)
99      {
100         logger.debug(message);
101     }
102 
103     /**
104      * Logs a message with parameters at the DEBUG level.
105      *
106      * @param message the message to log; the format depends on the message factory.
107      * @param params parameters to the message.
108      */
109     @Override
110     public void debug(final String message, final Object... params)
111     {
112         logger.debug(message, params);
113     }
114 
115     /**
116      * Logs a message with parameters which are only to be constructed if the
117      * logging level is the DEBUG level.
118      *
119      * @param message the message to log; the format depends on the message factory.
120      * @param paramSuppliers An array of functions, which when called, produce
121      *        the desired log message parameters.
122      */
123     @Override
124     public void debug(final String message, final Supplier<?>... paramSuppliers)
125     {
126         log(Level.DEBUG, message, paramSuppliers);
127     }
128 
129     /**
130      * Logs a message at the DEBUG level including the stack trace of the {@link Throwable}
131      * <code>t</code> passed as parameter.
132      *
133      * @param message the message to log.
134      * @param t the exception to log, including its stack trace.
135      */
136     @Override
137     public void debug(final String message, final Throwable t)
138     {
139         logger.debug(message, t);
140     }
141 
142     /**
143      * Logs a message object with the ERROR level.
144      *
145      * @param message the message string to log.
146      */
147     @Override
148     public void error(final String message)
149     {
150         logger.error(message);
151     }
152 
153     /**
154      * Logs a message object with the ERROR level.
155      *
156      * @param message the message object to log.
157      */
158     @Override
159     public void error(final Object message)
160     {
161         logger.error(message);
162     }
163 
164     /**
165      * Logs a message with parameters at the ERROR level.
166      *
167      * @param message the message to log; the format depends on the message factory.
168      * @param params parameters to the message.
169      */
170     @Override
171     public void error(final String message, final Object... params)
172     {
173         logger.error(message, params);
174     }
175 
176     /**
177      * Logs a message with parameters which are only to be constructed if the
178      * logging level is the ERROR level.
179      *
180      * @param message the message to log; the format depends on the message factory.
181      * @param paramSuppliers An array of functions, which when called, produce
182      *        the desired log message parameters.
183      */
184     @Override
185     public void error(final String message, final Supplier<?>... paramSuppliers)
186     {
187         log(Level.ERROR, message, paramSuppliers);
188     }
189 
190     /**
191      * Logs a message at the ERROR level including the stack trace of the {@link Throwable}
192      * <code>t</code> passed as parameter.
193      *
194      * @param message the message object to log.
195      * @param t the exception to log, including its stack trace.
196      */
197     @Override
198     public void error(final String message, final Throwable t)
199     {
200         logger.error(message, t);
201     }
202 
203     /**
204      * Logs a message object with the FATAL level.
205      *
206      * @param message the message string to log.
207      */
208     @Override
209     public void fatal(final String message)
210     {
211         logger.fatal(message);
212     }
213 
214     /**
215      * Logs a message object with the FATAL level.
216      *
217      * @param message the message object to log.
218      */
219     @Override
220     public void fatal(final Object message)
221     {
222         logger.fatal(message);
223     }
224 
225     /**
226      * Logs a message with parameters at the FATAL level.
227      *
228      * @param message the message to log; the format depends on the message factory.
229      * @param params parameters to the message.
230      */
231     @Override
232     public void fatal(final String message, final Object... params)
233     {
234         logger.fatal(message, params);
235     }
236 
237     /**
238      * Logs a message with parameters which are only to be constructed if the
239      * logging level is the FATAL level.
240      *
241      * @param message the message to log; the format depends on the message factory.
242      * @param paramSuppliers An array of functions, which when called, produce
243      *        the desired log message parameters.
244      */
245     @Override
246     public void fatal(final String message, final Supplier<?>... paramSuppliers)
247     {
248         log(Level.FATAL, message, paramSuppliers);
249     }
250 
251     /**
252      * Logs a message at the FATAL level including the stack trace of the {@link Throwable}
253      * <code>t</code> passed as parameter.
254      *
255      * @param message the message object to log.
256      * @param t the exception to log, including its stack trace.
257      */
258     @Override
259     public void fatal(final String message, final Throwable t)
260     {
261         logger.fatal(message, t);
262     }
263 
264     /**
265      * Gets the logger name.
266      *
267      * @return the logger name.
268      */
269     @Override
270     public String getName()
271     {
272         return logger.getName();
273     }
274 
275     /**
276      * Logs a message object with the INFO level.
277      *
278      * @param message the message string to log.
279      */
280     @Override
281     public void info(final String message)
282     {
283         logger.info(message);
284     }
285 
286     /**
287      * Logs a message object with the INFO level.
288      *
289      * @param message the message object to log.
290      */
291     @Override
292     public void info(final Object message)
293     {
294         logger.info(message);
295     }
296 
297     /**
298      * Logs a message with parameters at the INFO level.
299      *
300      * @param message the message to log; the format depends on the message factory.
301      * @param params parameters to the message.
302      */
303     @Override
304     public void info(final String message, final Object... params)
305     {
306         logger.info(message, params);
307     }
308 
309     /**
310      * Logs a message with parameters which are only to be constructed if the
311      * logging level is the INFO level.
312      *
313      * @param message the message to log; the format depends on the message factory.
314      * @param paramSuppliers An array of functions, which when called, produce
315      *        the desired log message parameters.
316      */
317     @Override
318     public void info(final String message, final Supplier<?>... paramSuppliers)
319     {
320         log(Level.INFO, message, paramSuppliers);
321     }
322 
323     /**
324      * Logs a message at the INFO level including the stack trace of the {@link Throwable}
325      * <code>t</code> passed as parameter.
326      *
327      * @param message the message object to log.
328      * @param t the exception to log, including its stack trace.
329      */
330     @Override
331     public void info(final String message, final Throwable t)
332     {
333         logger.info(message, t);
334     }
335 
336     /**
337      * Checks whether this Logger is enabled for the DEBUG Level.
338      *
339      * @return boolean - {@code true} if this Logger is enabled for level DEBUG, {@code false}
340      *         otherwise.
341      */
342     @Override
343     public boolean isDebugEnabled()
344     {
345         return logger.isDebugEnabled();
346     }
347 
348     /**
349      * Checks whether this Logger is enabled for the ERROR Level.
350      *
351      * @return boolean - {@code true} if this Logger is enabled for level ERROR, {@code false}
352      *         otherwise.
353      */
354     @Override
355     public boolean isErrorEnabled()
356     {
357         return logger.isErrorEnabled();
358     }
359 
360     /**
361      * Checks whether this Logger is enabled for the FATAL Level.
362      *
363      * @return boolean - {@code true} if this Logger is enabled for level FATAL, {@code false}
364      *         otherwise.
365      */
366     @Override
367     public boolean isFatalEnabled()
368     {
369         return logger.isFatalEnabled();
370     }
371 
372     /**
373      * Checks whether this Logger is enabled for the INFO Level.
374      *
375      * @return boolean - {@code true} if this Logger is enabled for level INFO, {@code false}
376      *         otherwise.
377      */
378     @Override
379     public boolean isInfoEnabled()
380     {
381         return logger.isInfoEnabled();
382     }
383 
384     /**
385      * Checks whether this Logger is enabled for the TRACE level.
386      *
387      * @return boolean - {@code true} if this Logger is enabled for level TRACE, {@code false}
388      *         otherwise.
389      */
390     @Override
391     public boolean isTraceEnabled()
392     {
393         return logger.isTraceEnabled();
394     }
395 
396     /**
397      * Checks whether this Logger is enabled for the WARN Level.
398      *
399      * @return boolean - {@code true} if this Logger is enabled for level WARN, {@code false}
400      *         otherwise.
401      */
402     @Override
403     public boolean isWarnEnabled()
404     {
405         return logger.isWarnEnabled();
406     }
407 
408     /**
409      * Logs a message object with the TRACE level.
410      *
411      * @param message the message string to log.
412      */
413     @Override
414     public void trace(final String message)
415     {
416         logger.trace(message);
417     }
418 
419     /**
420      * Logs a message object with the TRACE level.
421      *
422      * @param message the message object to log.
423      */
424     @Override
425     public void trace(final Object message)
426     {
427         logger.trace(message);
428     }
429 
430     /**
431      * Logs a message with parameters at the TRACE level.
432      *
433      * @param message the message to log; the format depends on the message factory.
434      * @param params parameters to the message.
435      */
436     @Override
437     public void trace(final String message, final Object... params)
438     {
439         logger.trace(message, params);
440     }
441 
442     /**
443      * Logs a message with parameters which are only to be constructed if the
444      * logging level is the TRACE level.
445      *
446      * @param message the message to log; the format depends on the message factory.
447      * @param paramSuppliers An array of functions, which when called, produce
448      *        the desired log message parameters.
449      */
450     @Override
451     public void trace(final String message, final Supplier<?>... paramSuppliers)
452     {
453         log(Level.TRACE, message, paramSuppliers);
454     }
455 
456     /**
457      * Logs a message at the TRACE level including the stack trace of the {@link Throwable}
458      * <code>t</code> passed as parameter.
459      *
460      * @param message the message object to log.
461      * @param t the exception to log, including its stack trace.
462      * @see #debug(String)
463      */
464     @Override
465     public void trace(final String message, final Throwable t)
466     {
467         logger.trace(message, t);
468     }
469 
470     /**
471      * Logs a message object with the WARN level.
472      *
473      * @param message the message string to log.
474      */
475     @Override
476     public void warn(final String message)
477     {
478         logger.warn(message);
479     }
480 
481     /**
482      * Logs a message object with the WARN level.
483      *
484      * @param message the message object to log.
485      */
486     @Override
487     public void warn(final Object message)
488     {
489         logger.warn(message);
490     }
491 
492     /**
493      * Logs a message with parameters at the WARN level.
494      *
495      * @param message the message to log; the format depends on the message factory.
496      * @param params parameters to the message.
497      */
498     @Override
499     public void warn(final String message, final Object... params)
500     {
501         logger.warn(message, params);
502     }
503 
504     /**
505      * Logs a message with parameters which are only to be constructed if the
506      * logging level is the WARN level.
507      *
508      * @param message the message to log; the format depends on the message factory.
509      * @param paramSuppliers An array of functions, which when called, produce
510      *        the desired log message parameters.
511      */
512     @Override
513     public void warn(final String message, final Supplier<?>... paramSuppliers)
514     {
515         log(Level.WARN, message, paramSuppliers);
516     }
517 
518     /**
519      * Logs a message at the WARN level including the stack trace of the {@link Throwable}
520      * <code>t</code> passed as parameter.
521      *
522      * @param message the message object to log.
523      * @param t the exception to log, including its stack trace.
524      */
525     @Override
526     public void warn(final String message, final Throwable t)
527     {
528         logger.warn(message, t);
529     }
530 }