1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package net.sourceforge.acelogger;
16
17 import net.sourceforge.acelogger.appender.Appender;
18 import net.sourceforge.acelogger.constants.AppenderConstants;
19 import net.sourceforge.acelogger.constants.LevelFilterConstants;
20 import net.sourceforge.acelogger.constants.LocationGathererConstants;
21 import net.sourceforge.acelogger.execution.LogController;
22 import net.sourceforge.acelogger.level.LogLevel;
23 import net.sourceforge.acelogger.level.filter.LevelFilter;
24 import net.sourceforge.acelogger.location.gatherer.LocationGatherer;
25
26
27
28
29
30
31
32
33 public abstract class BaseLogger implements Logger {
34
35
36
37
38 private LevelFilter threshold;
39
40
41
42
43 private Appender appender;
44
45
46
47
48 private LocationGatherer gatherer;
49
50
51
52
53 private String identifier;
54
55
56
57
58
59
60
61
62
63 protected BaseLogger(String identifier) {
64 this(identifier, AppenderConstants.EMPTY, LevelFilterConstants.ACCEPT_NONE,
65 LocationGathererConstants.EMPTY);
66 }
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 protected BaseLogger(String identifier, Appender appender, LevelFilter filter,
83 LocationGatherer gatherer) {
84 setIdentifier(identifier);
85 setAppender(appender);
86 setThreshold(filter);
87 setGatherer(gatherer);
88 }
89
90
91
92
93
94
95
96 public final LevelFilter getThreshold() {
97 return threshold;
98 }
99
100
101
102
103
104
105
106
107 public final void setThreshold(LevelFilter filter) {
108 if (filter == null) {
109 LogController.getInternalLogger().error(
110 "Received an <null> value for filter in logger \"{0}\". As a"
111 + " result this logger will accept no messages", getIdentifier()
112 );
113 threshold = LevelFilterConstants.ACCEPT_NONE;
114 } else {
115 threshold = filter;
116 }
117 }
118
119
120
121
122
123
124
125 public final LocationGatherer getGatherer() {
126 return gatherer;
127 }
128
129
130
131
132
133
134
135
136 public final void setGatherer(LocationGatherer gatherer) {
137 if (gatherer == null) {
138 LogController.getInternalLogger().error(
139 "Received an <null> value for gatherer in logger \"{0}\". As a"
140 + " result this logger will not generate call location information",
141 getIdentifier()
142 );
143 this.gatherer = LocationGathererConstants.EMPTY;
144 } else {
145 this.gatherer = gatherer;
146 }
147 }
148
149
150 public final String getIdentifier() {
151 return identifier;
152 }
153
154
155
156
157
158
159
160
161 private final void setIdentifier(String identifier) {
162 this.identifier = identifier;
163 }
164
165
166
167
168
169
170
171 public final Appender getAppender() {
172 return appender;
173 }
174
175
176
177
178
179
180
181
182 private final void setAppender(Appender appender) {
183 if (appender == null) {
184 LogController.getInternalLogger().error(
185 "Received an <null> value for appender in logger \"{0}\". As a"
186 + " result this logger won't output any message", getIdentifier()
187 );
188 this.appender = AppenderConstants.EMPTY;
189 } else {
190 this.appender = appender;
191 }
192 }
193
194
195
196
197
198
199
200
201
202
203
204
205
206 protected final LogEvent generateLogCall(String message, Object[] params, LogLevel level) {
207 return generateLogCall(message, params, level, null);
208 }
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224 protected final LogEvent generateLogCall(String message, Object[] params, LogLevel level,
225 Throwable cause) {
226 return generateLogCall(message, params, level, cause, Thread.currentThread());
227 }
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245 protected final LogEvent generateLogCall(String message, Object[] params, LogLevel level,
246 Throwable cause, Thread currenThread) {
247 LogEvent call = new LogEvent(message, level, gatherer.getCallLocation(currenThread), cause,
248 params);
249 return call;
250 }
251
252
253
254
255
256
257
258
259
260 private final boolean isSuitableForLogging(LogLevel level) {
261 return threshold.isSuitable(level);
262 }
263
264
265 public final boolean isDebugEnabled() {
266 return isSuitableForLogging(LogLevel.DEBUG);
267 }
268
269
270 public final boolean isErrorEnabled() {
271 return isSuitableForLogging(LogLevel.ERROR);
272 }
273
274
275 public final boolean isFatalEnabled() {
276 return isSuitableForLogging(LogLevel.FATAL);
277 }
278
279
280 public final boolean isInfoEnabled() {
281 return isSuitableForLogging(LogLevel.INFO);
282 }
283
284
285 public final boolean isTraceEnabled() {
286 return isSuitableForLogging(LogLevel.TRACE);
287 }
288
289
290 public final boolean isWarnEnabled() {
291 return isSuitableForLogging(LogLevel.WARN);
292 }
293
294
295 public final void debug(String message, Object... params) {
296 debug(message, null, params);
297 }
298
299
300 public final void debug(String message, Throwable cause, Object... params) {
301 if (isDebugEnabled()) {
302 LogEvent call = generateLogCall(message, params, LogLevel.DEBUG, cause);
303 appender.appendLog(call);
304 }
305 }
306
307
308 public final void error(String message, Object... params) {
309 error(message, null, params);
310 }
311
312
313 public final void error(String message, Throwable cause, Object... params) {
314 if (isErrorEnabled()) {
315 LogEvent call = generateLogCall(message, params, LogLevel.ERROR, cause);
316 appender.appendLog(call);
317 }
318 }
319
320
321 public final void fatal(String message, Object... params) {
322 fatal(message, null, params);
323 }
324
325
326 public final void fatal(String message, Throwable cause, Object... params) {
327 if (isFatalEnabled()) {
328 LogEvent call = generateLogCall(message, params, LogLevel.FATAL, cause);
329 appender.appendLog(call);
330 }
331 }
332
333
334 public final void info(String message, Object... params) {
335 info(message, null, params);
336 }
337
338
339 public final void info(String message, Throwable cause, Object... params) {
340 if (isInfoEnabled()) {
341 LogEvent call = generateLogCall(message, params, LogLevel.INFO, cause);
342 appender.appendLog(call);
343 }
344 }
345
346
347 public final void trace(String message, Object... params) {
348 trace(message, null, params);
349 }
350
351
352 public final void trace(String message, Throwable cause, Object... params) {
353 if (isTraceEnabled()) {
354 LogEvent call = generateLogCall(message, params, LogLevel.TRACE, cause);
355 appender.appendLog(call);
356 }
357 }
358
359
360 public final void warn(String message, Object... params) {
361 warn(message, null, params);
362 }
363
364
365 public final void warn(String message, Throwable cause, Object... params) {
366 if (isWarnEnabled()) {
367 LogEvent call = generateLogCall(message, params, LogLevel.WARN, cause);
368 appender.appendLog(call);
369 }
370 }
371
372 }