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