1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.log4j;
17
18 import org.slf4j.LoggerFactory;
19 import org.slf4j.Marker;
20 import org.slf4j.MarkerFactory;
21 import org.slf4j.spi.LocationAwareLogger;
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public class Category {
43
44 private String name;
45
46 private org.slf4j.Logger lbLogger;
47 private org.slf4j.spi.LocationAwareLogger locationAwareLogger;
48
49 private static Marker TRACE_MARKER = MarkerFactory.getMarker("TRACE");
50 private static Marker FATAL_MARKER = MarkerFactory.getMarker("FATAL");
51
52 Category(String name) {
53 this.name = name;
54 lbLogger = LoggerFactory.getLogger(name);
55 if(lbLogger instanceof LocationAwareLogger) {
56 locationAwareLogger = (LocationAwareLogger) lbLogger;
57 }
58 }
59
60 public static Logger getLogger(String name) {
61 return Log4jLoggerFactory.getLogger(name);
62 }
63
64 public static Logger getLogger(Class clazz) {
65 return getLogger(clazz.getName());
66 }
67
68
69
70
71
72
73 public static Logger getRootLogger() {
74 return getLogger("root");
75 }
76
77
78
79
80
81
82 public String getName() {
83 return name;
84 }
85
86
87
88
89
90 public boolean isTraceEnabled() {
91 return lbLogger.isTraceEnabled();
92 }
93
94
95
96
97 public boolean isDebugEnabled() {
98 return lbLogger.isDebugEnabled();
99 }
100
101
102
103
104 public boolean isInfoEnabled() {
105 return lbLogger.isInfoEnabled();
106 }
107
108
109
110
111 public boolean isWarnEnabled() {
112 return lbLogger.isWarnEnabled();
113 }
114
115 public boolean isEnabledFor(Priority p) {
116 return isEnabledFor(Level.toLevel(p.level));
117 }
118
119 public boolean isEnabledFor(Level l) {
120 switch (l.level) {
121 case Level.TRACE_INT:
122 return lbLogger.isTraceEnabled();
123 case Level.DEBUG_INT:
124 return lbLogger.isDebugEnabled();
125 case Level.INFO_INT:
126 return lbLogger.isInfoEnabled();
127 case Level.WARN_INT:
128 return lbLogger.isWarnEnabled();
129 case Level.ERROR_INT:
130 return lbLogger.isErrorEnabled();
131 case Priority.FATAL_INT:
132 return lbLogger.isErrorEnabled();
133 }
134 return false;
135 }
136
137
138
139
140 public boolean isErrorEnabled() {
141 return lbLogger.isErrorEnabled();
142 }
143
144
145
146
147
148 public void trace(Object message) {
149 lbLogger.debug(TRACE_MARKER, convertToString(message));
150 }
151
152
153
154
155
156 public void trace(Object message, Throwable t) {
157 lbLogger.debug(TRACE_MARKER, convertToString(message), t);
158 }
159
160
161
162
163
164 public void trace(Object message, Object o) {
165 lbLogger.debug(TRACE_MARKER, convertToString(message), o);
166 }
167
168
169
170
171
172 public void trace(String message, Object arg1, Object arg2) {
173 lbLogger.debug(TRACE_MARKER, message, arg1, arg2);
174 }
175
176
177
178
179
180 public void debug(Object message) {
181
182
183 lbLogger.debug(convertToString(message));
184 }
185
186
187
188
189
190 public void debug(Object message, Throwable t) {
191 lbLogger.debug(convertToString(message), t);
192 }
193
194
195
196
197
198 public void debug(Object message, Object o) {
199 lbLogger.debug(convertToString(message), o);
200 }
201
202
203
204
205
206 public void debug(String message, Object arg1, Object arg2) {
207 lbLogger.debug(message, arg1, arg2);
208 }
209
210
211
212
213
214 public void info(Object message) {
215 lbLogger.info(convertToString(message));
216 }
217
218
219
220
221
222 public void info(Object message, Throwable t) {
223 lbLogger.info(convertToString(message), t);
224 }
225
226
227
228
229
230 public void info(Object message, Object o) {
231 lbLogger.info(convertToString(message), o);
232 }
233
234
235
236
237
238 public void info(String message, Object arg1, Object arg2) {
239 lbLogger.info(message, arg1, arg2);
240 }
241
242
243
244
245
246 public void warn(Object message) {
247 lbLogger.warn(convertToString(message));
248 }
249
250
251
252
253
254 public void warn(Object message, Throwable t) {
255 lbLogger.warn(convertToString(message), t);
256 }
257
258
259
260
261
262 public void warn(Object message, Object o) {
263 lbLogger.warn(convertToString(message), o);
264 }
265
266
267
268
269
270 public void warn(String message, Object arg1, Object arg2) {
271 lbLogger.warn(message, arg1, arg2);
272 }
273
274
275
276
277
278 public void error(Object message) {
279 lbLogger.error(convertToString(message));
280 }
281
282
283
284
285
286 public void error(Object message, Throwable t) {
287 lbLogger.error(convertToString(message), t);
288 }
289
290
291
292
293
294 public void error(Object message, Object o) {
295 lbLogger.error(convertToString(message), o);
296 }
297
298
299
300
301
302 public void error(String message, Object arg1, Object arg2) {
303 lbLogger.error(message, arg1, arg2);
304 }
305
306
307
308
309
310 public void fatal(Object message) {
311 lbLogger.error(FATAL_MARKER, convertToString(message));
312 }
313
314
315
316
317
318 public void fatal(Object message, Throwable t) {
319 lbLogger.error(FATAL_MARKER, convertToString(message), t);
320 }
321
322
323
324
325
326 public void fatal(Object message, Object o) {
327 lbLogger.error(FATAL_MARKER, convertToString(message), o);
328 }
329
330
331
332
333
334 public void fatal(String message, Object arg1, Object arg2) {
335 lbLogger.error(FATAL_MARKER, message, arg1, arg2);
336 }
337
338 public void log(String FQCN, Priority p, Object msg, Throwable t) {
339 int levelInt = priorityToLevelInt(p);
340 if(locationAwareLogger != null) {
341 if(msg != null) {
342 locationAwareLogger.log(null, FQCN, levelInt, msg.toString(), t);
343 } else {
344 locationAwareLogger.log(null, FQCN, levelInt, null, t);
345 }
346 } else {
347 throw new UnsupportedOperationException("The logger ["+lbLogger+"] does not seem to be location aware.");
348 }
349
350 }
351
352 private int priorityToLevelInt(Priority p) {
353 switch (p.level) {
354 case Level.TRACE_INT:
355 return LocationAwareLogger.TRACE_INT;
356 case Priority.DEBUG_INT:
357 return LocationAwareLogger.DEBUG_INT;
358 case Priority.INFO_INT:
359 return LocationAwareLogger.INFO_INT;
360 case Priority.WARN_INT:
361 return LocationAwareLogger.WARN_INT;
362 case Priority.ERROR_INT:
363 return LocationAwareLogger.ERROR_INT;
364 case Priority.FATAL_INT:
365 return LocationAwareLogger.ERROR_INT;
366 default:
367 throw new IllegalStateException("Unknown Priority " + p);
368 }
369 }
370
371 private final String convertToString(Object message) {
372 if (message == null) {
373 return (String)message;
374 } else {
375 return message.toString();
376 }
377 }
378
379 }