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