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