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 package org.slf4j.impl;
31
32 import lombok.EqualsAndHashCode;
33 import lombok.ToString;
34 import org.apache.maven.plugin.logging.Log;
35 import org.slf4j.Marker;
36 import org.slf4j.event.Level;
37 import org.slf4j.helpers.FormattingTuple;
38 import org.slf4j.helpers.LegacyAbstractLogger;
39 import org.slf4j.helpers.MessageFormatter;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 @ToString
55 @EqualsAndHashCode(callSuper = false)
56 @SuppressWarnings("PMD.TooManyMethods")
57 final class Slf4jAdapter extends LegacyAbstractLogger {
58
59
60
61
62 public static final long serialVersionUID = 0x12C0976798AB5439L;
63
64
65
66
67 private final transient Log mlog;
68
69
70
71
72 private final transient String label;
73
74
75
76
77
78
79 Slf4jAdapter(final Log log, final String name) {
80 super();
81 this.mlog = log;
82 this.label = name;
83 }
84
85 @Override
86 public String getName() {
87 return this.getClass().getName();
88 }
89
90 @Override
91 public boolean isTraceEnabled() {
92 return false;
93 }
94
95 @Override
96 public void trace(final String msg) {
97 this.mlog.debug(this.decorate(msg));
98 }
99
100 @Override
101 public void trace(final String format, final Object arg) {
102 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, arg)));
103 }
104
105 @Override
106 public void trace(final String format, final Object first,
107 final Object second) {
108 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, first, second)));
109 }
110
111 @Override
112 public void trace(final String format, final Object... array) {
113 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, array)));
114 }
115
116 @Override
117 public void trace(final String msg, final Throwable thr) {
118 this.mlog.debug(this.decorate(msg), thr);
119 }
120
121 @Override
122 public boolean isDebugEnabled() {
123 return this.mlog.isDebugEnabled();
124 }
125
126 @Override
127 public void debug(final String msg) {
128 this.mlog.debug(this.decorate(msg));
129 }
130
131 @Override
132 public void debug(final String format, final Object arg) {
133 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, arg)));
134 }
135
136 @Override
137 public void debug(final String format, final Object first,
138 final Object second) {
139 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, first, second)));
140 }
141
142 @Override
143 public void debug(final String format, final Object... array) {
144 this.mlog.debug(this.decorate(Slf4jAdapter.format(format, array)));
145 }
146
147 @Override
148 public void debug(final String msg, final Throwable thr) {
149 this.mlog.debug(this.decorate(msg), thr);
150 }
151
152 @Override
153 public boolean isInfoEnabled() {
154 return true;
155 }
156
157 @Override
158 public void info(final String msg) {
159 this.mlog.info(msg);
160 }
161
162 @Override
163 public void info(final String format, final Object arg) {
164 this.mlog.info(Slf4jAdapter.format(format, arg));
165 }
166
167 @Override
168 public void info(final String format, final Object first,
169 final Object second) {
170 this.mlog.info(Slf4jAdapter.format(format, first, second));
171 }
172
173 @Override
174 public void info(final String format, final Object... array) {
175 this.mlog.info(Slf4jAdapter.format(format, array));
176 }
177
178 @Override
179 public void info(final String msg, final Throwable thr) {
180 this.mlog.info(msg, thr);
181 }
182
183 @Override
184 public boolean isWarnEnabled() {
185 return true;
186 }
187
188 @Override
189 public void warn(final String msg) {
190 this.mlog.warn(msg);
191 }
192
193 @Override
194 public void warn(final String format, final Object arg) {
195 this.mlog.warn(Slf4jAdapter.format(format, arg));
196 }
197
198 @Override
199 public void warn(final String format, final Object... array) {
200 this.mlog.warn(Slf4jAdapter.format(format, array));
201 }
202
203 @Override
204 public void warn(final String format, final Object first,
205 final Object second) {
206 this.mlog.warn(Slf4jAdapter.format(format, first, second));
207 }
208
209 @Override
210 public void warn(final String msg, final Throwable thr) {
211 this.mlog.warn(msg, thr);
212 }
213
214 @Override
215 public boolean isErrorEnabled() {
216 return true;
217 }
218
219 @Override
220 public void error(final String msg) {
221 this.mlog.error(msg);
222 }
223
224 @Override
225 public void error(final String format, final Object arg) {
226 this.mlog.error(Slf4jAdapter.format(format, arg));
227 }
228
229 @Override
230 public void error(final String format, final Object first,
231 final Object second) {
232 this.mlog.error(Slf4jAdapter.format(format, first, second));
233 }
234
235 @Override
236 public void error(final String format, final Object... array) {
237 this.mlog.error(Slf4jAdapter.format(format, array));
238 }
239
240 @Override
241 public void error(final String msg, final Throwable thr) {
242 this.mlog.error(msg, thr);
243 }
244
245 @Override
246 public String getFullyQualifiedCallerName() {
247 return "jcabi-maven-slf4j";
248 }
249
250 @Override
251 public void handleNormalizedLoggingCall(final Level level, final Marker marker,
252 final String msg, final Object[] arguments, final Throwable throwable) {
253 throw new UnsupportedOperationException("we should not reach this point ever");
254 }
255
256
257
258
259
260
261
262 private static String format(final String format, final Object arg) {
263 final FormattingTuple tuple =
264 MessageFormatter.format(format, arg);
265 return tuple.getMessage();
266 }
267
268
269
270
271
272
273
274
275 private static String format(final String format, final Object first,
276 final Object second) {
277 final FormattingTuple tuple =
278 MessageFormatter.format(format, first, second);
279 return tuple.getMessage();
280 }
281
282
283
284
285
286
287
288 private static String format(final String format, final Object[] array) {
289 final FormattingTuple tuple =
290 MessageFormatter.format(format, array);
291 return tuple.getMessage();
292 }
293
294
295
296
297
298
299 private String decorate(final String msg) {
300 return String.format(
301 "%s %s: %s",
302 Thread.currentThread().getName(),
303 this.label,
304 msg
305 );
306 }
307
308 }