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 public class Category {
42
43 private String name;
44
45 private org.slf4j.Logger slf4jLogger;
46 private org.slf4j.spi.LocationAwareLogger locationAwareLogger;
47
48 private static Marker FATAL_MARKER = MarkerFactory.getMarker("FATAL");
49
50 Category(String name) {
51 this.name = name;
52 slf4jLogger = LoggerFactory.getLogger(name);
53 if(slf4jLogger instanceof LocationAwareLogger) {
54 locationAwareLogger = (LocationAwareLogger) slf4jLogger;
55 }
56 }
57
58 public static Logger getLogger(String name) {
59 return Log4jLoggerFactory.getLogger(name);
60 }
61
62 public static Logger getLogger(Class clazz) {
63 return getLogger(clazz.getName());
64 }
65
66
67
68
69
70
71 public static Logger getRootLogger() {
72 return getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
73 }
74
75
76
77
78
79
80 public String getName() {
81 return name;
82 }
83
84
85
86
87
88
89
90
91
92 public Level getEffectiveLevel() {
93 if(slf4jLogger.isTraceEnabled()) {
94 return Level.TRACE;
95 }
96 if(slf4jLogger.isDebugEnabled()) {
97 return Level.DEBUG;
98 }
99 if(slf4jLogger.isInfoEnabled()) {
100 return Level.INFO;
101 }
102 if(slf4jLogger.isWarnEnabled()) {
103 return Level.WARN;
104 }
105 return Level.ERROR;
106 }
107
108
109
110
111
112
113
114 final public Level getLevel() {
115 return null;
116 }
117
118
119
120
121
122 final public Level getPriority() {
123 return null;
124 }
125
126
127
128
129
130 public boolean isTraceEnabled() {
131 return slf4jLogger.isTraceEnabled();
132 }
133
134
135
136
137 public boolean isDebugEnabled() {
138 return slf4jLogger.isDebugEnabled();
139 }
140
141
142
143
144 public boolean isInfoEnabled() {
145 return slf4jLogger.isInfoEnabled();
146 }
147
148
149
150
151 public boolean isWarnEnabled() {
152 return slf4jLogger.isWarnEnabled();
153 }
154
155
156
157
158 public boolean isErrorEnabled() {
159 return slf4jLogger.isErrorEnabled();
160 }
161
162
163
164
165
166
167
168 public boolean isEnabledFor(Priority p) {
169 return isEnabledFor(Level.toLevel(p.level));
170 }
171
172
173
174
175
176
177
178
179
180 public boolean isEnabledFor(Level l) {
181 switch (l.level) {
182 case Level.TRACE_INT:
183 return slf4jLogger.isTraceEnabled();
184 case Level.DEBUG_INT:
185 return slf4jLogger.isDebugEnabled();
186 case Level.INFO_INT:
187 return slf4jLogger.isInfoEnabled();
188 case Level.WARN_INT:
189 return slf4jLogger.isWarnEnabled();
190 case Level.ERROR_INT:
191 return slf4jLogger.isErrorEnabled();
192 case Priority.FATAL_INT:
193 return slf4jLogger.isErrorEnabled();
194 }
195 return false;
196 }
197
198
199
200
201 public void trace(Object message) {
202
203
204 slf4jLogger.trace(convertToString(message));
205 }
206
207
208
209
210
211 public void trace(Object message, Throwable t) {
212 slf4jLogger.trace(convertToString(message), t);
213 }
214
215
216
217
218
219 public void debug(Object message) {
220
221
222 slf4jLogger.debug(convertToString(message));
223 }
224
225
226
227
228
229 public void debug(Object message, Throwable t) {
230 slf4jLogger.debug(convertToString(message), t);
231 }
232
233
234
235
236
237 public void info(Object message) {
238 slf4jLogger.info(convertToString(message));
239 }
240
241
242
243
244
245 public void info(Object message, Throwable t) {
246 slf4jLogger.info(convertToString(message), t);
247 }
248
249
250
251
252
253 public void warn(Object message) {
254 slf4jLogger.warn(convertToString(message));
255 }
256
257
258
259
260
261 public void warn(Object message, Throwable t) {
262 slf4jLogger.warn(convertToString(message), t);
263 }
264
265
266
267
268
269
270 public void error(Object message) {
271 slf4jLogger.error(convertToString(message));
272 }
273
274
275
276
277
278 public void error(Object message, Throwable t) {
279 slf4jLogger.error(convertToString(message), t);
280 }
281
282
283
284
285
286 public void fatal(Object message) {
287 slf4jLogger.error(FATAL_MARKER, convertToString(message));
288 }
289
290
291
292
293
294 public void fatal(Object message, Throwable t) {
295 slf4jLogger.error(FATAL_MARKER, convertToString(message), t);
296 }
297
298 public void log(String FQCN, Priority p, Object msg, Throwable t) {
299 int levelInt = priorityToLevelInt(p);
300 if(locationAwareLogger != null) {
301 if(msg != null) {
302 locationAwareLogger.log(null, FQCN, levelInt, msg.toString(), t);
303 } else {
304 locationAwareLogger.log(null, FQCN, levelInt, null, t);
305 }
306 } else {
307 throw new UnsupportedOperationException("The logger ["+slf4jLogger+"] does not seem to be location aware.");
308 }
309
310 }
311
312 private int priorityToLevelInt(Priority p) {
313 switch (p.level) {
314 case Level.TRACE_INT:
315 return LocationAwareLogger.TRACE_INT;
316 case Priority.DEBUG_INT:
317 return LocationAwareLogger.DEBUG_INT;
318 case Priority.INFO_INT:
319 return LocationAwareLogger.INFO_INT;
320 case Priority.WARN_INT:
321 return LocationAwareLogger.WARN_INT;
322 case Priority.ERROR_INT:
323 return LocationAwareLogger.ERROR_INT;
324 case Priority.FATAL_INT:
325 return LocationAwareLogger.ERROR_INT;
326 default:
327 throw new IllegalStateException("Unknown Priority " + p);
328 }
329 }
330
331 private final String convertToString(Object message) {
332 if (message == null) {
333 return (String)message;
334 } else {
335 return message.toString();
336 }
337 }
338
339 }