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