1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of Java-Common.
5 *
6 * Java-Common is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * Java-Common is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Java-Common. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.logging;
21
22 import java.util.logging.Level;
23 import java.util.logging.LogManager;
24 import java.util.logging.Logger;
25
26
27 /**
28 * <code>DebugLogger</code> is wrapper around <code>Logger</code> class, which
29 * produces logger with preset arbitrary logging level and handler
30 * <code>ConsoleLogHandler</code>.
31 *
32 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a>
33 * @version $Id: DebugLogger.java,v 1.3 2008-04-22 12:26:29 jbobnar Exp $
34 *
35 * @since Jun 27, 2004.
36 */
37 public class DebugLogger extends Logger
38 {
39 //private static boolean init = false;
40
41 /**
42 * Returns logger with specified name and initial logging level. If level
43 * is OFF , then instance of <code>NullLogger</code> is return, which
44 * statically sends all logs to dev/null.
45 *
46 * @param name a name for the logger
47 * @param level initial level of logger
48 *
49 * @return a logger, <code>NullLogger</code> if level is OFF
50 *
51 * @see Logger#getLogger(java.lang.String)
52 */
53 public synchronized static Logger getLogger(String name, Level level)
54 {
55 // TODO workaround becouse maven junit tester fails to load handler
56
57 /*if (!init) {
58 // to make sure class loaded, because of strange problems with JUnit class loader
59 //ConsoleLogHandler clh = new ConsoleLogHandler();
60 //clh.close();
61 ConsoleLogHandler.initializeConsoleLogging();
62 init = true;
63 }*/
64 if (Level.OFF.equals(level)) {
65 return NullLogger.getNullLogger();
66 }
67
68 // TODO workaround becouse maven junit tester fails to load handler
69 Logger l = LogManager.getLogManager().getLogger(name);
70
71 if (l == null) {
72 l = new DebugLogger(name, null);
73 LogManager.getLogManager().addLogger(l);
74 l.setUseParentHandlers(false);
75 l.setLevel(level);
76 l.addHandler(new ConsoleLogHandler());
77 }
78
79 return l;
80 }
81
82 protected DebugLogger(String name, String resourceBundleName)
83 {
84 super(name, resourceBundleName);
85 }
86
87 /**
88 * DOCUMENT ME!
89 *
90 * @param args DOCUMENT ME!
91 */
92 public static void main(String[] args)
93 {
94 try {
95 Logger l = getLogger("dummy", Level.ALL);
96
97 l.info("Test");
98
99 l.finest("Finest Test");
100 } catch (Exception e) {
101 e.printStackTrace();
102 }
103 }
104 }
105
106 /* __oOo__ */