1
2
3
4
5
6
7
8
9
10
11 package org.mule.module.logging;
12
13 import java.io.Serializable;
14
15 import org.apache.log4j.Level;
16 import org.slf4j.Marker;
17 import org.slf4j.helpers.FormattingTuple;
18 import org.slf4j.helpers.MarkerIgnoringBase;
19 import org.slf4j.helpers.MessageFormatter;
20 import org.slf4j.spi.LocationAwareLogger;
21
22
23
24
25
26 public class AccessibleLog4jLoggerAdapter extends MarkerIgnoringBase implements LocationAwareLogger, Serializable
27 {
28
29 private static final long serialVersionUID = 6182834493563598289L;
30
31 final transient org.apache.log4j.Logger logger;
32
33
34
35
36
37 final static String FQCN = AccessibleLog4jLoggerAdapter.class.getName();
38
39
40
41 final boolean traceCapable;
42
43
44
45
46 AccessibleLog4jLoggerAdapter(org.apache.log4j.Logger logger)
47 {
48 this.logger = logger;
49 this.name = logger.getName();
50 traceCapable = isTraceCapable();
51 }
52
53 private boolean isTraceCapable()
54 {
55 try
56 {
57 logger.isTraceEnabled();
58 return true;
59 }
60 catch (NoSuchMethodError e)
61 {
62 return false;
63 }
64 }
65
66
67
68
69
70
71 public boolean isTraceEnabled()
72 {
73 if (traceCapable)
74 {
75 return logger.isTraceEnabled();
76 }
77 else
78 {
79 return logger.isDebugEnabled();
80 }
81 }
82
83
84
85
86
87
88 public void trace(String msg)
89 {
90 logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, msg, null);
91 }
92
93
94
95
96
97
98
99
100
101
102
103
104
105 public void trace(String format, Object arg)
106 {
107 if (isTraceEnabled())
108 {
109 FormattingTuple ft = MessageFormatter.format(format, arg);
110 logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft
111 .getMessage(), ft.getThrowable());
112 }
113 }
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 public void trace(String format, Object arg1, Object arg2)
129 {
130 if (isTraceEnabled())
131 {
132 FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
133 logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft
134 .getMessage(), ft.getThrowable());
135 }
136 }
137
138
139
140
141
142
143
144
145
146
147
148
149
150 public void trace(String format, Object[] argArray)
151 {
152 if (isTraceEnabled())
153 {
154 FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
155 logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft
156 .getMessage(), ft.getThrowable());
157 }
158 }
159
160
161
162
163
164
165
166 public void trace(String msg, Throwable t)
167 {
168 logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, msg, t);
169 }
170
171
172
173
174
175
176 public boolean isDebugEnabled()
177 {
178 return logger.isDebugEnabled();
179 }
180
181
182
183
184
185
186 public void debug(String msg)
187 {
188 logger.log(FQCN, Level.DEBUG, msg, null);
189 }
190
191
192
193
194
195
196
197
198
199
200
201
202
203 public void debug(String format, Object arg)
204 {
205 if (logger.isDebugEnabled())
206 {
207 FormattingTuple ft = MessageFormatter.format(format, arg);
208 logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
209 }
210 }
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225 public void debug(String format, Object arg1, Object arg2)
226 {
227 if (logger.isDebugEnabled())
228 {
229 FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
230 logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
231 }
232 }
233
234
235
236
237
238
239
240
241
242
243
244
245
246 public void debug(String format, Object[] argArray)
247 {
248 if (logger.isDebugEnabled())
249 {
250 FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
251 logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
252 }
253 }
254
255
256
257
258
259
260
261 public void debug(String msg, Throwable t)
262 {
263 logger.log(FQCN, Level.DEBUG, msg, t);
264 }
265
266
267
268
269
270
271 public boolean isInfoEnabled()
272 {
273 return logger.isInfoEnabled();
274 }
275
276
277
278
279
280
281 public void info(String msg)
282 {
283 logger.log(FQCN, Level.INFO, msg, null);
284 }
285
286
287
288
289
290
291
292
293
294
295
296
297 public void info(String format, Object arg)
298 {
299 if (logger.isInfoEnabled())
300 {
301 FormattingTuple ft = MessageFormatter.format(format, arg);
302 logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
303 }
304 }
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319 public void info(String format, Object arg1, Object arg2)
320 {
321 if (logger.isInfoEnabled())
322 {
323 FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
324 logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
325 }
326 }
327
328
329
330
331
332
333
334
335
336
337
338
339
340 public void info(String format, Object[] argArray)
341 {
342 if (logger.isInfoEnabled())
343 {
344 FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
345 logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
346 }
347 }
348
349
350
351
352
353
354
355
356 public void info(String msg, Throwable t)
357 {
358 logger.log(FQCN, Level.INFO, msg, t);
359 }
360
361
362
363
364
365
366 public boolean isWarnEnabled()
367 {
368 return logger.isEnabledFor(Level.WARN);
369 }
370
371
372
373
374
375
376 public void warn(String msg)
377 {
378 logger.log(FQCN, Level.WARN, msg, null);
379 }
380
381
382
383
384
385
386
387
388
389
390
391
392
393 public void warn(String format, Object arg)
394 {
395 if (logger.isEnabledFor(Level.WARN))
396 {
397 FormattingTuple ft = MessageFormatter.format(format, arg);
398 logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
399 }
400 }
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415 public void warn(String format, Object arg1, Object arg2)
416 {
417 if (logger.isEnabledFor(Level.WARN))
418 {
419 FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
420 logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
421 }
422 }
423
424
425
426
427
428
429
430
431
432
433
434
435
436 public void warn(String format, Object[] argArray)
437 {
438 if (logger.isEnabledFor(Level.WARN))
439 {
440 FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
441 logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
442 }
443 }
444
445
446
447
448
449
450
451
452 public void warn(String msg, Throwable t)
453 {
454 logger.log(FQCN, Level.WARN, msg, t);
455 }
456
457
458
459
460
461
462 public boolean isErrorEnabled()
463 {
464 return logger.isEnabledFor(Level.ERROR);
465 }
466
467
468
469
470
471
472 public void error(String msg)
473 {
474 logger.log(FQCN, Level.ERROR, msg, null);
475 }
476
477
478
479
480
481
482
483
484
485
486
487
488
489 public void error(String format, Object arg)
490 {
491 if (logger.isEnabledFor(Level.ERROR))
492 {
493 FormattingTuple ft = MessageFormatter.format(format, arg);
494 logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
495 }
496 }
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511 public void error(String format, Object arg1, Object arg2)
512 {
513 if (logger.isEnabledFor(Level.ERROR))
514 {
515 FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
516 logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
517 }
518 }
519
520
521
522
523
524
525
526
527
528
529
530
531
532 public void error(String format, Object[] argArray)
533 {
534 if (logger.isEnabledFor(Level.ERROR))
535 {
536 FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
537 logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
538 }
539 }
540
541
542
543
544
545
546
547
548 public void error(String msg, Throwable t)
549 {
550 logger.log(FQCN, Level.ERROR, msg, t);
551 }
552
553 public void log(Marker marker, String callerFQCN, int level, String msg,
554 Object[] argArray, Throwable t)
555 {
556 Level log4jLevel;
557 switch (level)
558 {
559 case LocationAwareLogger.TRACE_INT:
560 log4jLevel = traceCapable ? Level.TRACE : Level.DEBUG;
561 break;
562 case LocationAwareLogger.DEBUG_INT:
563 log4jLevel = Level.DEBUG;
564 break;
565 case LocationAwareLogger.INFO_INT:
566 log4jLevel = Level.INFO;
567 break;
568 case LocationAwareLogger.WARN_INT:
569 log4jLevel = Level.WARN;
570 break;
571 case LocationAwareLogger.ERROR_INT:
572 log4jLevel = Level.ERROR;
573 break;
574 default:
575 throw new IllegalStateException("Level number " + level
576 + " is not recognized.");
577 }
578 logger.log(callerFQCN, log4jLevel, msg, t);
579 }
580
581 }