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