source: kraken-core/src/main/java/org/slf4j/impl/KrakenLogger.java @ 252:03151475cb03

Revision 252:03151475cb03, 10.8 KB checked in by xeraph, 6 months ago (diff)
  • 1.8.0 version
  • upgraded felix 2.0.5 to 3.2.2
Line 
1/*
2 * Copyright 2009 NCHOVY
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.slf4j.impl;
17
18import java.io.ByteArrayOutputStream;
19import java.io.PrintStream;
20import java.io.Serializable;
21import java.util.Date;
22import java.util.concurrent.BlockingQueue;
23
24import org.apache.log4j.Logger;
25import org.apache.log4j.Priority;
26import org.osgi.framework.Bundle;
27import org.osgi.framework.ServiceReference;
28import org.slf4j.Marker;
29import org.slf4j.helpers.MessageFormatter;
30
31public class KrakenLogger extends org.apache.felix.framework.Logger implements org.slf4j.Logger, Serializable {
32        private static final long serialVersionUID = 1L;
33        private static long bootTime = System.currentTimeMillis();
34        public static final String LINE_SEPARATOR = System.getProperty("line.separator");
35        private static int INFO = Priority.INFO_INT;
36        private static int WARN = Priority.WARN_INT;
37        private static int ERROR = Priority.ERROR_INT;
38        private static int DEBUG = Priority.DEBUG_INT;
39        private static int TRACE = Priority.DEBUG_INT;
40
41        private String name;
42        private boolean isDebugEnabled = false;
43        private boolean isTraceEnabled = false;
44        private boolean isInfoEnabled = true;
45        private boolean isWarnEnabled = true;
46        private boolean isErrorEnabled = true;
47
48        private BlockingQueue<KrakenLog> queue;
49
50        public KrakenLogger(String name, BlockingQueue<KrakenLog> queue) {
51                this.name = name;
52                this.queue = queue;
53        }
54
55        @Override
56        public void debug(String format, Object arg1, Object arg2) {
57                if (isDebugEnabled)
58                        formatAndLog(DEBUG, format, arg1, arg2);
59        }
60
61        @Override
62        public void debug(String format, Object arg) {
63                if (isDebugEnabled)
64                        formatAndLog(DEBUG, format, arg, null);
65        }
66
67        @Override
68        public void debug(String format, Object[] argArray) {
69                if (isDebugEnabled)
70                        formatAndLog(DEBUG, format, argArray);
71        }
72
73        @Override
74        public void debug(String msg, Throwable t) {
75                if (isDebugEnabled)
76                        internalLog(DEBUG, msg, t);
77        }
78
79        @Override
80        public void debug(String msg) {
81                if (isDebugEnabled)
82                        internalLog(DEBUG, msg, null);
83        }
84
85        @Override
86        public void error(String format, Object arg1, Object arg2) {
87                if (isErrorEnabled)
88                        formatAndLog(ERROR, format, arg1, arg2);
89        }
90
91        @Override
92        public void error(String format, Object arg) {
93                if (isErrorEnabled)
94                        formatAndLog(ERROR, format, arg, null);
95        }
96
97        @Override
98        public void error(String format, Object[] argArray) {
99                if (isErrorEnabled)
100                        formatAndLog(ERROR, format, argArray);
101        }
102
103        @Override
104        public void error(String msg, Throwable t) {
105                if (isErrorEnabled)
106                        internalLog(ERROR, msg, t);
107        }
108
109        @Override
110        public void error(String msg) {
111                if (isErrorEnabled)
112                        internalLog(ERROR, msg, null);
113        }
114
115        @Override
116        public void info(String format, Object arg1, Object arg2) {
117                if (isInfoEnabled)
118                        formatAndLog(INFO, format, arg1, arg2);
119        }
120
121        @Override
122        public void info(String format, Object arg) {
123                if (isInfoEnabled)
124                        formatAndLog(INFO, format, arg, null);
125        }
126
127        @Override
128        public void info(String format, Object[] argArray) {
129                if (isInfoEnabled)
130                        formatAndLog(INFO, format, argArray);
131        }
132
133        @Override
134        public void info(String msg, Throwable t) {
135                if (isInfoEnabled)
136                        internalLog(INFO, msg, t);
137        }
138
139        @Override
140        public void info(String msg) {
141                if (isInfoEnabled)
142                        internalLog(INFO, msg, null);
143        }
144
145        @Override
146        public boolean isDebugEnabled() {
147                return isDebugEnabled;
148        }
149
150        @Override
151        public boolean isErrorEnabled() {
152                return isErrorEnabled;
153        }
154
155        @Override
156        public boolean isInfoEnabled() {
157                return isInfoEnabled;
158        }
159
160        @Override
161        public boolean isTraceEnabled() {
162                return isTraceEnabled;
163        }
164
165        @Override
166        public boolean isWarnEnabled() {
167                return isWarnEnabled;
168        }
169
170        public void setDebugEnabled(boolean isDebugEnabled) {
171                this.isDebugEnabled = isDebugEnabled;
172        }
173
174        public void setTraceEnabled(boolean isTraceEnabled) {
175                this.isTraceEnabled = isTraceEnabled;
176        }
177
178        public void setInfoEnabled(boolean isInfoEnabled) {
179                this.isInfoEnabled = isInfoEnabled;
180        }
181
182        public void setWarnEnabled(boolean isWarnEnabled) {
183                this.isWarnEnabled = isWarnEnabled;
184        }
185
186        public void setErrorEnabled(boolean isErrorEnabled) {
187                this.isErrorEnabled = isErrorEnabled;
188        }
189
190        @Override
191        public void trace(String format, Object arg1, Object arg2) {
192                if (isTraceEnabled)
193                        formatAndLog(TRACE, format, arg1, arg2);
194        }
195
196        @Override
197        public void trace(String format, Object arg) {
198                if (isTraceEnabled)
199                        formatAndLog(TRACE, format, arg, null);
200        }
201
202        @Override
203        public void trace(String format, Object[] argArray) {
204                if (isTraceEnabled)
205                        formatAndLog(TRACE, format, argArray);
206        }
207
208        @Override
209        public void trace(String msg, Throwable t) {
210                if (isTraceEnabled)
211                        internalLog(TRACE, msg, t);
212        }
213
214        @Override
215        public void trace(String msg) {
216                if (isTraceEnabled)
217                        internalLog(TRACE, msg, null);
218        }
219
220        @Override
221        public void warn(String format, Object arg1, Object arg2) {
222                if (isWarnEnabled)
223                        formatAndLog(WARN, format, arg1, arg2);
224        }
225
226        @Override
227        public void warn(String format, Object arg) {
228                if (isWarnEnabled)
229                        formatAndLog(WARN, format, arg, null);
230        }
231
232        @Override
233        public void warn(String format, Object[] argArray) {
234                if (isWarnEnabled)
235                        formatAndLog(WARN, format, argArray);
236        }
237
238        @Override
239        public void warn(String msg, Throwable t) {
240                if (isWarnEnabled)
241                        internalLog(WARN, msg, t);
242        }
243
244        @Override
245        public void warn(String msg) {
246                if (isWarnEnabled)
247                        internalLog(WARN, msg, null);
248        }
249
250        @SuppressWarnings("deprecation")
251        private void internalLog(int level, String message, Throwable t) {
252                Date date = new Date();
253                Priority priority = Priority.toPriority(level);
254                if (t != null) {
255                        getLogger().log(priority, message + "\n" + makeStackTrace(t));
256                } else {
257                        getLogger().log(priority, message);
258                }
259
260                long timeOffset = System.currentTimeMillis() - bootTime;
261
262                queue.add(new KrakenLog(name, timeOffset, date, level, message, t));
263        }
264
265        private String makeStackTrace(Throwable t) {
266                if (t == null)
267                        return "";
268                try {
269                        ByteArrayOutputStream out = new ByteArrayOutputStream();
270                        t.printStackTrace(new PrintStream(out));
271                        out.flush();
272                        return new String(out.toByteArray());
273                } catch (Exception e) {
274                        return "";
275                }
276        }
277
278        private Logger getLogger() {
279                return Logger.getLogger(name);
280        }
281
282        /**
283         * For formatted messages, first substitute arguments and then log.
284         *
285         * @param level
286         * @param format
287         * @param param1
288         * @param param2
289         */
290        private void formatAndLog(int level, String format, Object arg1, Object arg2) {
291                String message = MessageFormatter.format(format, arg1, arg2);
292                internalLog(level, message, null);
293        }
294
295        /**
296         * For formatted messages, first substitute arguments and then log.
297         *
298         * @param level
299         * @param format
300         * @param argArray
301         */
302        private void formatAndLog(int level, String format, Object[] argArray) {
303                String message = MessageFormatter.arrayFormat(format, argArray);
304                internalLog(level, message, null);
305        }
306
307        /**
308         * Marker ignoring base.
309         */
310
311        @Override
312        public void debug(Marker marker, String msg) {
313                debug(msg);
314        }
315
316        @Override
317        public void debug(Marker marker, String format, Object arg) {
318                debug(format, arg);
319        }
320
321        @Override
322        public void debug(Marker marker, String format, Object[] argArray) {
323                debug(format, argArray);
324        }
325
326        @Override
327        public void debug(Marker marker, String msg, Throwable t) {
328                debug(msg, t);
329        }
330
331        @Override
332        public void debug(Marker marker, String format, Object arg1, Object arg2) {
333                debug(format, arg1, arg2);
334        }
335
336        @Override
337        public void error(Marker marker, String msg) {
338                error(msg);
339        }
340
341        @Override
342        public void error(Marker marker, String format, Object arg) {
343                error(format, arg);
344        }
345
346        @Override
347        public void error(Marker marker, String format, Object[] argArray) {
348                error(format, argArray);
349        }
350
351        @Override
352        public void error(Marker marker, String msg, Throwable t) {
353                error(msg, t);
354        }
355
356        @Override
357        public void error(Marker marker, String format, Object arg1, Object arg2) {
358                error(format, arg1, arg2);
359        }
360
361        @Override
362        public void info(Marker marker, String msg) {
363                info(msg);
364        }
365
366        @Override
367        public void info(Marker marker, String format, Object arg) {
368                info(format, arg);
369        }
370
371        @Override
372        public void info(Marker marker, String format, Object[] argArray) {
373                info(format, argArray);
374        }
375
376        @Override
377        public void info(Marker marker, String msg, Throwable t) {
378                info(msg, t);
379        }
380
381        @Override
382        public void info(Marker marker, String format, Object arg1, Object arg2) {
383                info(format, arg1, arg2);
384        }
385
386        @Override
387        public boolean isDebugEnabled(Marker marker) {
388                return isDebugEnabled;
389        }
390
391        @Override
392        public boolean isErrorEnabled(Marker marker) {
393                return isErrorEnabled;
394        }
395
396        @Override
397        public boolean isInfoEnabled(Marker marker) {
398                return isInfoEnabled;
399        }
400
401        @Override
402        public boolean isTraceEnabled(Marker marker) {
403                return isTraceEnabled;
404        }
405
406        @Override
407        public boolean isWarnEnabled(Marker marker) {
408                return isWarnEnabled;
409        }
410
411        @Override
412        public void trace(Marker marker, String msg) {
413                trace(msg);
414        }
415
416        @Override
417        public void trace(Marker marker, String format, Object arg) {
418                trace(format, arg);
419        }
420
421        @Override
422        public void trace(Marker marker, String format, Object[] argArray) {
423                trace(format, argArray);
424        }
425
426        @Override
427        public void trace(Marker marker, String msg, Throwable t) {
428                trace(msg, t);
429        }
430
431        @Override
432        public void trace(Marker marker, String format, Object arg1, Object arg2) {
433                trace(format, arg1, arg2);
434        }
435
436        @Override
437        public void warn(Marker marker, String msg) {
438                warn(msg);
439        }
440
441        @Override
442        public void warn(Marker marker, String format, Object arg) {
443                warn(format, arg);
444        }
445
446        @Override
447        public void warn(Marker marker, String format, Object[] argArray) {
448                warn(format, argArray);
449        }
450
451        @Override
452        public void warn(Marker marker, String msg, Throwable t) {
453                warn(msg, t);
454        }
455
456        @Override
457        public void warn(Marker marker, String format, Object arg1, Object arg2) {
458                warn(format, arg1, arg2);
459        }
460
461        @Override
462        public String getName() {
463                return name;
464        }
465
466        /**
467         * for felix logger.
468         */
469        @Override
470        protected void doLog(Bundle bundle, ServiceReference sr, int level, String msg, Throwable throwable) {
471                internalLog(level, msg, throwable);
472        }
473}
Note: See TracBrowser for help on using the repository browser.