1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 package org.waarp.common.logging;
57
58 import java.util.logging.Level;
59 import java.util.logging.LogRecord;
60 import java.util.logging.Logger;
61
62
63
64
65
66 public class WaarpJdkLogger extends AbstractWaarpLogger {
67
68 private static final long serialVersionUID = -1767272577989225979L;
69
70 final transient Logger logger;
71
72 WaarpJdkLogger(final Logger logger) {
73 super(logger.getName());
74 this.logger = logger;
75 }
76
77 @Override
78 public final void setLevel(final WaarpLogLevel level) {
79 switch (level) {
80 case TRACE:
81 logger.setLevel(Level.FINEST);
82 break;
83 case DEBUG:
84 logger.setLevel(Level.FINE);
85 break;
86 case INFO:
87 logger.setLevel(Level.INFO);
88 break;
89 case WARN:
90 logger.setLevel(Level.WARNING);
91 break;
92 case ERROR:
93 logger.setLevel(Level.SEVERE);
94 break;
95 case NONE:
96 logger.setLevel(Level.OFF);
97 break;
98 }
99 }
100
101
102
103
104
105
106 @Override
107 public final boolean isTraceEnabled() {
108 return logger.isLoggable(Level.FINEST);
109 }
110
111 @Override
112 public final void junit(final int callee, final String msg) {
113 logger.warning(msg);
114 }
115
116
117
118
119
120
121 @Override
122 public final void trace(final String msg) {
123 if (logger.isLoggable(Level.FINEST)) {
124 log(SELF, Level.FINEST, msg, null);
125 }
126 }
127
128
129
130
131
132
133
134
135
136
137
138
139
140 @Override
141 public final void trace(final String format, final Object arg) {
142 if (logger.isLoggable(Level.FINEST)) {
143 final FormattingTuple ft = MessageFormatter.format(format, arg);
144 log(SELF, Level.FINEST, ft.getMessage(), ft.getThrowable());
145 }
146 }
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 @Override
162 public final void trace(final String format, final Object argA,
163 final Object argB) {
164 if (logger.isLoggable(Level.FINEST)) {
165 final FormattingTuple ft = MessageFormatter.format(format, argA, argB);
166 log(SELF, Level.FINEST, ft.getMessage(), ft.getThrowable());
167 }
168 }
169
170
171
172
173
174
175
176
177
178
179
180
181
182 @Override
183 public final void trace(final String format, final Object... argArray) {
184 if (logger.isLoggable(Level.FINEST)) {
185 final FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
186 log(SELF, Level.FINEST, ft.getMessage(), ft.getThrowable());
187 }
188 }
189
190
191
192
193
194
195
196
197 @Override
198 public final void trace(final String msg, final Throwable t) {
199 if (logger.isLoggable(Level.FINEST)) {
200 log(SELF, Level.FINEST, msg, t);
201 }
202 }
203
204
205
206
207
208
209 @Override
210 public final boolean isDebugEnabled() {
211 return logger.isLoggable(Level.FINE);
212 }
213
214
215
216
217
218
219 @Override
220 public final void debug(final String msg) {
221 if (logger.isLoggable(Level.FINE)) {
222 log(SELF, Level.FINE, msg, null);
223 }
224 }
225
226
227
228
229
230
231
232
233
234
235
236
237
238 @Override
239 public final void debug(final String format, final Object arg) {
240 if (logger.isLoggable(Level.FINE)) {
241 final FormattingTuple ft = MessageFormatter.format(format, arg);
242 log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());
243 }
244 }
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259 @Override
260 public final void debug(final String format, final Object argA,
261 final Object argB) {
262 if (logger.isLoggable(Level.FINE)) {
263 final FormattingTuple ft = MessageFormatter.format(format, argA, argB);
264 log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());
265 }
266 }
267
268
269
270
271
272
273
274
275
276
277
278
279
280 @Override
281 public final void debug(final String format, final Object... argArray) {
282 if (logger.isLoggable(Level.FINE)) {
283 final FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
284 log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());
285 }
286 }
287
288
289
290
291
292
293
294 @Override
295 public final void debug(final String msg, final Throwable t) {
296 if (logger.isLoggable(Level.FINE)) {
297 log(SELF, Level.FINE, msg, t);
298 }
299 }
300
301
302
303
304
305
306
307 @Override
308 public final boolean isInfoEnabled() {
309 return logger.isLoggable(Level.INFO);
310 }
311
312
313
314
315
316
317 @Override
318 public final void info(final String msg) {
319 if (logger.isLoggable(Level.INFO)) {
320 log(SELF, Level.INFO, msg, null);
321 }
322 }
323
324
325
326
327
328
329
330
331
332
333
334
335
336 @Override
337 public final void info(final String format, final Object arg) {
338 if (logger.isLoggable(Level.INFO)) {
339 final FormattingTuple ft = MessageFormatter.format(format, arg);
340 log(SELF, Level.INFO, ft.getMessage(), ft.getThrowable());
341 }
342 }
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357 @Override
358 public final void info(final String format, final Object argA,
359 final Object argB) {
360 if (logger.isLoggable(Level.INFO)) {
361 final FormattingTuple ft = MessageFormatter.format(format, argA, argB);
362 log(SELF, Level.INFO, ft.getMessage(), ft.getThrowable());
363 }
364 }
365
366
367
368
369
370
371
372
373
374
375
376
377
378 @Override
379 public final void info(final String format, final Object... argArray) {
380 if (logger.isLoggable(Level.INFO)) {
381 final FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
382 log(SELF, Level.INFO, ft.getMessage(), ft.getThrowable());
383 }
384 }
385
386
387
388
389
390
391
392
393 @Override
394 public final void info(final String msg, final Throwable t) {
395 if (logger.isLoggable(Level.INFO)) {
396 log(SELF, Level.INFO, msg, t);
397 }
398 }
399
400
401
402
403
404
405
406 @Override
407 public final boolean isWarnEnabled() {
408 return logger.isLoggable(Level.WARNING);
409 }
410
411
412
413
414
415
416 @Override
417 public final void warn(final String msg) {
418 if (logger.isLoggable(Level.WARNING)) {
419 log(SELF, Level.WARNING, msg, null);
420 }
421 }
422
423
424
425
426
427
428
429
430
431
432
433
434
435 @Override
436 public final void warn(final String format, final Object arg) {
437 if (logger.isLoggable(Level.WARNING)) {
438 final FormattingTuple ft = MessageFormatter.format(format, arg);
439 log(SELF, Level.WARNING, ft.getMessage(), ft.getThrowable());
440 }
441 }
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456 @Override
457 public final void warn(final String format, final Object argA,
458 final Object argB) {
459 if (logger.isLoggable(Level.WARNING)) {
460 final FormattingTuple ft = MessageFormatter.format(format, argA, argB);
461 log(SELF, Level.WARNING, ft.getMessage(), ft.getThrowable());
462 }
463 }
464
465
466
467
468
469
470
471
472
473
474
475
476
477 @Override
478 public final void warn(final String format, final Object... argArray) {
479 if (logger.isLoggable(Level.WARNING)) {
480 final FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
481 log(SELF, Level.WARNING, ft.getMessage(), ft.getThrowable());
482 }
483 }
484
485
486
487
488
489
490
491
492 @Override
493 public final void warn(final String msg, final Throwable t) {
494 if (logger.isLoggable(Level.WARNING)) {
495 log(SELF, Level.WARNING, msg, t);
496 }
497 }
498
499
500
501
502
503
504 @Override
505 public final boolean isErrorEnabled() {
506 return logger.isLoggable(Level.SEVERE);
507 }
508
509
510
511
512
513
514 @Override
515 public final void error(final String msg) {
516 if (logger.isLoggable(Level.SEVERE)) {
517 log(SELF, Level.SEVERE, msg, null);
518 }
519 }
520
521
522
523
524
525
526
527
528
529
530
531
532
533 @Override
534 public final void error(final String format, final Object arg) {
535 if (logger.isLoggable(Level.SEVERE)) {
536 final FormattingTuple ft = MessageFormatter.format(format, arg);
537 log(SELF, Level.SEVERE, ft.getMessage(), ft.getThrowable());
538 }
539 }
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554 @Override
555 public final void error(final String format, final Object argA,
556 final Object argB) {
557 if (logger.isLoggable(Level.SEVERE)) {
558 final FormattingTuple ft = MessageFormatter.format(format, argA, argB);
559 log(SELF, Level.SEVERE, ft.getMessage(), ft.getThrowable());
560 }
561 }
562
563
564
565
566
567
568
569
570
571
572
573
574
575 @Override
576 public final void error(final String format, final Object... arguments) {
577 if (logger.isLoggable(Level.SEVERE)) {
578 final FormattingTuple ft =
579 MessageFormatter.arrayFormat(format, arguments);
580 log(SELF, Level.SEVERE, ft.getMessage(), ft.getThrowable());
581 }
582 }
583
584
585
586
587
588
589
590
591 @Override
592 public final void error(final String msg, final Throwable t) {
593 if (logger.isLoggable(Level.SEVERE)) {
594 log(SELF, Level.SEVERE, msg, t);
595 }
596 }
597
598
599
600
601
602
603
604
605
606 private void log(final String callerFQCN, final Level level, final String msg,
607 final Throwable t) {
608
609 final LogRecord record = new LogRecord(level, msg);
610 record.setLoggerName(name());
611 record.setThrown(t);
612 fillCallerData(callerFQCN, record);
613 logger.log(record);
614 }
615
616 static final String SELF = WaarpJdkLogger.class.getName();
617 static final String SUPER = AbstractWaarpLogger.class.getName();
618
619
620
621
622
623
624 private static void fillCallerData(final String callerFQCN,
625 final LogRecord record) {
626 final StackTraceElement[] steArray = new Throwable().getStackTrace();
627
628 int selfIndex = -1;
629 for (int i = 0; i < steArray.length; i++) {
630 final String className = steArray[i].getClassName();
631 if (className.equals(callerFQCN) || className.equals(SUPER)) {
632 selfIndex = i;
633 break;
634 }
635 }
636
637 int found = -1;
638 for (int i = selfIndex + 1; i < steArray.length; i++) {
639 final String className = steArray[i].getClassName();
640 if (!(className.equals(callerFQCN) || className.equals(SUPER))) {
641 found = i;
642 break;
643 }
644 }
645
646 if (found != -1) {
647 final StackTraceElement ste = steArray[found];
648
649
650 record.setSourceClassName(ste.getClassName());
651 record.setSourceMethodName(ste.getMethodName());
652 }
653 }
654 }