View Javadoc

1   // ========================================================================
2   // Copyright (c) Webtide LLC
3   // ------------------------------------------------------------------------
4   // All rights reserved. This program and the accompanying materials
5   // are made available under the terms of the Eclipse Public License v1.0
6   // and Apache License v2.0 which accompanies this distribution.
7   // The Eclipse Public License is available at 
8   // http://www.eclipse.org/legal/epl-v10.html
9   // The Apache License v2.0 is available at
10  // http://www.opensource.org/licenses/apache2.0.php
11  // You may elect to redistribute this code under either of these licenses. 
12  // ========================================================================
13  package org.eclipse.jetty.util.log;
14  
15  import org.slf4j.Marker;
16  import org.slf4j.helpers.FormattingTuple;
17  import org.slf4j.helpers.MessageFormatter;
18  
19  /**
20   * JettyAwareLogger is used to fix a FQCN bug that arises from how Jetty
21   * Log uses an indirect slf4j implementation.
22   * 
23   * https://bugs.eclipse.org/bugs/show_bug.cgi?id=276670
24   */
25  class JettyAwareLogger implements org.slf4j.Logger 
26  {
27      private static final int DEBUG = org.slf4j.spi.LocationAwareLogger.DEBUG_INT;
28      private static final int ERROR = org.slf4j.spi.LocationAwareLogger.ERROR_INT;
29      private static final int INFO  = org.slf4j.spi.LocationAwareLogger.INFO_INT;
30      private static final int TRACE = org.slf4j.spi.LocationAwareLogger.TRACE_INT;
31      private static final int WARN  = org.slf4j.spi.LocationAwareLogger.WARN_INT;
32      
33      private static final String FQCN = Slf4jLog.class.getName();
34      private final org.slf4j.spi.LocationAwareLogger _logger;
35      
36      public JettyAwareLogger(org.slf4j.spi.LocationAwareLogger logger)
37      {
38          _logger = logger;
39      }
40  
41      /* ------------------------------------------------------------ */
42      /**
43       * @see org.slf4j.Logger#getName()
44       */
45      public String getName()
46      {
47          return _logger.getName();
48      }
49  
50      /* ------------------------------------------------------------ */
51      /**
52       * @see org.slf4j.Logger#isTraceEnabled()
53       */
54      public boolean isTraceEnabled()
55      {
56          return _logger.isTraceEnabled();
57      }
58  
59      /* ------------------------------------------------------------ */
60      /**
61       * @see org.slf4j.Logger#trace(java.lang.String)
62       */
63      public void trace(String msg)
64      {
65          log(null, TRACE, msg, null, null);
66      }
67  
68      /* ------------------------------------------------------------ */
69      /**
70       * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object)
71       */
72      public void trace(String format, Object arg)
73      {
74          log(null, TRACE, format, new Object[]{arg}, null);
75      }
76  
77      /* ------------------------------------------------------------ */
78      /**
79       * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object)
80       */
81      public void trace(String format, Object arg1, Object arg2)
82      {
83          log(null, TRACE, format, new Object[]{arg1,arg2}, null);
84      }
85  
86      /* ------------------------------------------------------------ */
87      /**
88       * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[])
89       */
90      public void trace(String format, Object[] argArray)
91      {
92          log(null, TRACE, format, argArray, null);
93      }
94  
95      /* ------------------------------------------------------------ */
96      /**
97       * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Throwable)
98       */
99      public void trace(String msg, Throwable t)
100     {
101         log(null, TRACE, msg, null, t);
102     }
103 
104     /* ------------------------------------------------------------ */
105     /**
106      * @see org.slf4j.Logger#isTraceEnabled(org.slf4j.Marker)
107      */
108     public boolean isTraceEnabled(Marker marker)
109     {
110         return _logger.isTraceEnabled(marker);
111     }
112 
113     /* ------------------------------------------------------------ */
114     /**
115      * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String)
116      */
117     public void trace(Marker marker, String msg)
118     {
119         log(marker, TRACE, msg, null, null);
120     }
121 
122     /* ------------------------------------------------------------ */
123     /**
124      * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object)
125      */
126     public void trace(Marker marker, String format, Object arg)
127     {
128         log(marker, TRACE, format, new Object[]{arg}, null);
129     }
130 
131     /* ------------------------------------------------------------ */
132     /**
133      * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
134      */
135     public void trace(Marker marker, String format, Object arg1, Object arg2)
136     {
137         log(marker, TRACE, format, new Object[]{arg1,arg2}, null);
138     }
139 
140     /* ------------------------------------------------------------ */
141     /**
142      * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object[])
143      */
144     public void trace(Marker marker, String format, Object[] argArray)
145     {
146         log(marker, TRACE, format, argArray, null);
147     }
148 
149     /* ------------------------------------------------------------ */
150     /**
151      * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
152      */
153     public void trace(Marker marker, String msg, Throwable t)
154     {
155         log(marker, TRACE, msg, null, t);
156     }
157 
158     /* ------------------------------------------------------------ */
159     /**
160      * @see org.slf4j.Logger#isDebugEnabled()
161      */
162     public boolean isDebugEnabled()
163     {
164         return _logger.isDebugEnabled();
165     }
166 
167     /* ------------------------------------------------------------ */
168     /**
169      * @see org.slf4j.Logger#debug(java.lang.String)
170      */
171     public void debug(String msg)
172     {
173         log(null, DEBUG, msg, null, null);
174     }
175 
176     /* ------------------------------------------------------------ */
177     /**
178      * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object)
179      */
180     public void debug(String format, Object arg)
181     {
182         log(null, DEBUG, format, new Object[]{arg}, null);
183     }
184 
185     /* ------------------------------------------------------------ */
186     /**
187      * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object)
188      */
189     public void debug(String format, Object arg1, Object arg2)
190     {
191         log(null, DEBUG, format, new Object[]{arg1,arg2}, null);
192     }
193 
194     /* ------------------------------------------------------------ */
195     /**
196      * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[])
197      */
198     public void debug(String format, Object[] argArray)
199     {
200         log(null, DEBUG, format, argArray, null);
201     }
202 
203     /* ------------------------------------------------------------ */
204     /**
205      * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Throwable)
206      */
207     public void debug(String msg, Throwable t)
208     {
209         log(null, DEBUG, msg, null, t);
210     }
211 
212     /* ------------------------------------------------------------ */
213     /**
214      * @see org.slf4j.Logger#isDebugEnabled(org.slf4j.Marker)
215      */
216     public boolean isDebugEnabled(Marker marker)
217     {
218         return _logger.isDebugEnabled(marker);
219     }
220 
221     /* ------------------------------------------------------------ */
222     /**
223      * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String)
224      */
225     public void debug(Marker marker, String msg)
226     {
227         log(marker, DEBUG, msg, null, null);
228     }
229 
230     /* ------------------------------------------------------------ */
231     /**
232      * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object)
233      */
234     public void debug(Marker marker, String format, Object arg)
235     {
236         log(marker, DEBUG, format, new Object[]{arg}, null);
237     }
238 
239     /* ------------------------------------------------------------ */
240     /**
241      * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
242      */
243     public void debug(Marker marker, String format, Object arg1, Object arg2)
244     {
245         log(marker, DEBUG, format, new Object[]{arg1,arg2}, null);
246     }
247 
248     /* ------------------------------------------------------------ */
249     /**
250      * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object[])
251      */
252     public void debug(Marker marker, String format, Object[] argArray)
253     {
254         log(marker, DEBUG, format, argArray, null);
255     }
256 
257     /* ------------------------------------------------------------ */
258     /**
259      * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
260      */
261     public void debug(Marker marker, String msg, Throwable t)
262     {
263         log(marker, DEBUG, msg, null, t);
264     }
265 
266     /* ------------------------------------------------------------ */
267     /**
268      * @see org.slf4j.Logger#isInfoEnabled()
269      */
270     public boolean isInfoEnabled()
271     {
272         return _logger.isInfoEnabled();
273     }
274 
275     /* ------------------------------------------------------------ */
276     /**
277      * @see org.slf4j.Logger#info(java.lang.String)
278      */
279     public void info(String msg)
280     {
281         log(null, INFO, msg, null, null);
282     }
283 
284     /* ------------------------------------------------------------ */
285     /**
286      * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object)
287      */
288     public void info(String format, Object arg)
289     {
290         log(null, INFO, format, new Object[]{arg}, null);
291     }
292 
293     /* ------------------------------------------------------------ */
294     /**
295      * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object)
296      */
297     public void info(String format, Object arg1, Object arg2)
298     {
299         log(null, INFO, format, new Object[]{arg1,arg2}, null);
300     }
301 
302     /* ------------------------------------------------------------ */
303     /**
304      * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[])
305      */
306     public void info(String format, Object[] argArray)
307     {
308         log(null, INFO, format, argArray, null);
309     }
310 
311     /* ------------------------------------------------------------ */
312     /**
313      * @see org.slf4j.Logger#info(java.lang.String, java.lang.Throwable)
314      */
315     public void info(String msg, Throwable t)
316     {
317         log(null, INFO, msg, null, t);
318     }
319 
320     /* ------------------------------------------------------------ */
321     /**
322      * @see org.slf4j.Logger#isInfoEnabled(org.slf4j.Marker)
323      */
324     public boolean isInfoEnabled(Marker marker)
325     {
326         return _logger.isInfoEnabled(marker);
327     }
328 
329     /* ------------------------------------------------------------ */
330     /**
331      * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String)
332      */
333     public void info(Marker marker, String msg)
334     {
335         log(marker, INFO, msg, null, null);
336     }
337 
338     /* ------------------------------------------------------------ */
339     /**
340      * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object)
341      */
342     public void info(Marker marker, String format, Object arg)
343     {
344         log(marker, INFO, format, new Object[]{arg}, null);
345     }
346 
347     /* ------------------------------------------------------------ */
348     /**
349      * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
350      */
351     public void info(Marker marker, String format, Object arg1, Object arg2)
352     {
353         log(marker, INFO, format, new Object[]{arg1,arg2}, null);
354     }
355 
356     /* ------------------------------------------------------------ */
357     /**
358      * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object[])
359      */
360     public void info(Marker marker, String format, Object[] argArray)
361     {
362         log(marker, INFO, format, argArray, null);
363     }
364 
365     /* ------------------------------------------------------------ */
366     /**
367      * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
368      */
369     public void info(Marker marker, String msg, Throwable t)
370     {
371         log(marker, INFO, msg, null, t);
372     }
373 
374     /* ------------------------------------------------------------ */
375     /**
376      * @see org.slf4j.Logger#isWarnEnabled()
377      */
378     public boolean isWarnEnabled()
379     {
380         return _logger.isWarnEnabled();
381     }
382 
383     /* ------------------------------------------------------------ */
384     /**
385      * @see org.slf4j.Logger#warn(java.lang.String)
386      */
387     public void warn(String msg)
388     {
389         log(null, WARN, msg, null, null);
390     }
391 
392     /* ------------------------------------------------------------ */
393     /**
394      * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object)
395      */
396     public void warn(String format, Object arg)
397     {
398         log(null, WARN, format, new Object[]{arg}, null);
399     }
400 
401     /* ------------------------------------------------------------ */
402     /**
403      * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[])
404      */
405     public void warn(String format, Object[] argArray)
406     {
407         log(null, WARN, format, argArray, null);
408     }
409 
410     /* ------------------------------------------------------------ */
411     /**
412      * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object)
413      */
414     public void warn(String format, Object arg1, Object arg2)
415     {
416         log(null, WARN, format, new Object[]{arg1,arg2}, null);
417     }
418 
419     /* ------------------------------------------------------------ */
420     /**
421      * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Throwable)
422      */
423     public void warn(String msg, Throwable t)
424     {
425         log(null, WARN, msg, null, t);
426     }
427 
428     /* ------------------------------------------------------------ */
429     /**
430      * @see org.slf4j.Logger#isWarnEnabled(org.slf4j.Marker)
431      */
432     public boolean isWarnEnabled(Marker marker)
433     {
434         return _logger.isWarnEnabled(marker);
435     }
436 
437     /* ------------------------------------------------------------ */
438     /**
439      * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String)
440      */
441     public void warn(Marker marker, String msg)
442     {
443         log(marker, WARN, msg, null, null);
444     }
445 
446     /* ------------------------------------------------------------ */
447     /**
448      * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object)
449      */
450     public void warn(Marker marker, String format, Object arg)
451     {
452         log(marker, WARN, format, new Object[]{arg}, null);
453     }
454 
455     /* ------------------------------------------------------------ */
456     /**
457      * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
458      */
459     public void warn(Marker marker, String format, Object arg1, Object arg2)
460     {
461         log(marker, WARN, format, new Object[]{arg1,arg2}, null);
462     }
463 
464     /* ------------------------------------------------------------ */
465     /**
466      * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object[])
467      */
468     public void warn(Marker marker, String format, Object[] argArray)
469     {
470         log(marker, WARN, format, argArray, null);
471     }
472 
473     /* ------------------------------------------------------------ */
474     /**
475      * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
476      */
477     public void warn(Marker marker, String msg, Throwable t)
478     {
479         log(marker, WARN, msg, null, t);
480     }
481 
482     /* ------------------------------------------------------------ */
483     /**
484      * @see org.slf4j.Logger#isErrorEnabled()
485      */
486     public boolean isErrorEnabled()
487     {
488         return _logger.isErrorEnabled();
489     }
490 
491     /* ------------------------------------------------------------ */
492     /**
493      * @see org.slf4j.Logger#error(java.lang.String)
494      */
495     public void error(String msg)
496     {
497         log(null, ERROR, msg, null, null);
498     }
499 
500     /* ------------------------------------------------------------ */
501     /**
502      * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object)
503      */
504     public void error(String format, Object arg)
505     {
506         log(null, ERROR, format, new Object[]{arg}, null);
507     }
508 
509     /* ------------------------------------------------------------ */
510     /**
511      * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object)
512      */
513     public void error(String format, Object arg1, Object arg2)
514     {
515         log(null, ERROR, format, new Object[]{arg1,arg2}, null);
516     }
517 
518     /* ------------------------------------------------------------ */
519     /**
520      * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[])
521      */
522     public void error(String format, Object[] argArray)
523     {
524         log(null, ERROR, format, argArray, null);
525     }
526 
527     /* ------------------------------------------------------------ */
528     /**
529      * @see org.slf4j.Logger#error(java.lang.String, java.lang.Throwable)
530      */
531     public void error(String msg, Throwable t)
532     {
533         log(null, ERROR, msg, null, t);
534     }
535 
536     /* ------------------------------------------------------------ */
537     /**
538      * @see org.slf4j.Logger#isErrorEnabled(org.slf4j.Marker)
539      */
540     public boolean isErrorEnabled(Marker marker)
541     {
542         return _logger.isErrorEnabled(marker);
543     }
544 
545     /* ------------------------------------------------------------ */
546     /**
547      * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String)
548      */
549     public void error(Marker marker, String msg)
550     {
551         log(marker, ERROR, msg, null, null);
552     }
553 
554     /* ------------------------------------------------------------ */
555     /**
556      * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object)
557      */
558     public void error(Marker marker, String format, Object arg)
559     {
560         log(marker, ERROR, format, new Object[]{arg}, null);
561     }
562 
563     /* ------------------------------------------------------------ */
564     /**
565      * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object)
566      */
567     public void error(Marker marker, String format, Object arg1, Object arg2)
568     {
569         log(marker, ERROR, format, new Object[]{arg1,arg2}, null);
570     }
571 
572     /* ------------------------------------------------------------ */
573     /**
574      * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object[])
575      */
576     public void error(Marker marker, String format, Object[] argArray)
577     {
578         log(marker, ERROR, format, argArray, null);
579     }
580 
581     /* ------------------------------------------------------------ */
582     /**
583      * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Throwable)
584      */
585     public void error(Marker marker, String msg, Throwable t)
586     {
587         log(marker, ERROR, msg, null, t);
588     }
589     
590     @Override
591     public String toString()
592     {
593         return _logger.toString();
594     }
595     
596     private void log(Marker marker, int level, String msg, Object[] argArray, Throwable t)
597     {
598         if (argArray == null)
599         {
600             // Simple SLF4J Message (no args)
601             _logger.log(marker,FQCN,level,msg,null,t);
602         }
603         else
604         {
605             // Don't assume downstream handles argArray properly.
606             // Do it the SLF4J way here to eliminate that as a bug.
607             FormattingTuple ft = MessageFormatter.arrayFormat(msg,argArray);
608             _logger.log(marker,FQCN,level,ft.getMessage(),null,t);
609         }
610     }
611 }