KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > dna > impl > ConsoleLogger


1 /*
2  * Copyright (C) The DNA Group. All rights reserved.
3  *
4  * This software is published under the terms of the DNA
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.dna.impl;
9
10 import org.codehaus.dna.Logger;
11
12 import java.io.PrintStream JavaDoc;
13
14 /**
15  * A simple logger facade that simply writes to the Console.
16  *
17  * @version $Revision: 1.2 $ $Date: 2004/05/01 09:51:48 $
18  */

19 public class ConsoleLogger
20     implements Logger
21 {
22     /**
23      * Constant to indicate that the logger
24      * must log all levels.
25      */

26     public static final int LEVEL_ALL = 0;
27
28     /**
29      * Constant to indicate that the logger
30      * must log all levels TRACE and above.
31      */

32     public static final int LEVEL_TRACE = 1;
33
34     /**
35      * Constant to indicate that the logger
36      * must log all levels DEBUG and above.
37      */

38     public static final int LEVEL_DEBUG = 2;
39
40     /**
41      * Constant to indicate that the logger
42      * must log all levels INFO and above.
43      */

44     public static final int LEVEL_INFO = 3;
45
46     /**
47      * Constant to indicate that the logger
48      * must log all levels WARN and above.
49      */

50     public static final int LEVEL_WARN = 4;
51
52     /**
53      * Constant to indicate that the logger
54      * must log all levels ERROR and above.
55      */

56     public static final int LEVEL_ERROR = 5;
57
58     /**
59      * Constant to indicate that the logger
60      * must not log any messages.
61      */

62     public static final int LEVEL_NONE = 6;
63
64     /**
65      * String constant used to output TRACE messages.
66      */

67     private static final String JavaDoc LEVEL_TRACE_STR = "TRACE";
68
69     /**
70      * String constant used to output DEBUG messages.
71      */

72     private static final String JavaDoc LEVEL_DEBUG_STR = "DEBUG";
73
74     /**
75      * String constant used to output INFO messages.
76      */

77     private static final String JavaDoc LEVEL_INFO_STR = "INFO";
78
79     /**
80      * String constant used to output WARN messages.
81      */

82     private static final String JavaDoc LEVEL_WARN_STR = "WARN";
83
84     /**
85      * String constant used to output ERROR messages.
86      */

87     private static final String JavaDoc LEVEL_ERROR_STR = "ERROR";
88
89     /**
90      * The log level.
91      */

92     private final int m_level;
93
94     /**
95      * The output location.
96      */

97     private final PrintStream JavaDoc m_output;
98
99     /**
100      * Create a Console Logger that logs all messages.
101      */

102     public ConsoleLogger()
103     {
104         this( LEVEL_ALL );
105     }
106
107     /**
108      * Create a Console Logger that logs at specified level.
109      *
110      * @param level one of the LEVEL_* constants
111      */

112     public ConsoleLogger( final int level )
113     {
114         this( level, System.out );
115     }
116
117     /**
118      * Create a Console Logger that logs at specified level.
119      *
120      * @param level one of the LEVEL_* constants
121      * @param output the stream to output to
122      */

123     public ConsoleLogger( final int level,
124                           final PrintStream JavaDoc output )
125     {
126         if( null == output )
127         {
128             throw new NullPointerException JavaDoc( "output" );
129         }
130         m_level = level;
131         m_output = output;
132     }
133
134     /**
135      * Log a trace message.
136      *
137      * @param message the message
138      */

139     public void trace( final String JavaDoc message )
140     {
141         trace( message, null );
142     }
143
144     /**
145      * Log a trace message with an associated throwable.
146      *
147      * @param message the message
148      * @param throwable the throwable
149      */

150     public void trace( final String JavaDoc message,
151                        final Throwable JavaDoc throwable )
152     {
153         output( LEVEL_TRACE, LEVEL_TRACE_STR, message, throwable );
154     }
155
156     /**
157      * Return true if a trace message will be logged.
158      *
159      * @return true if message will be logged
160      */

161     public boolean isTraceEnabled()
162     {
163         return m_level <= LEVEL_TRACE;
164     }
165
166     /**
167      * Log a debug message.
168      *
169      * @param message the message
170      */

171     public void debug( final String JavaDoc message )
172     {
173         debug( message, null );
174     }
175
176     /**
177      * Log a debug message with an associated throwable.
178      *
179      * @param message the message
180      * @param throwable the throwable
181      */

182     public void debug( final String JavaDoc message,
183                        final Throwable JavaDoc throwable )
184     {
185         output( LEVEL_DEBUG, LEVEL_DEBUG_STR, message, throwable );
186     }
187
188     /**
189      * Return true if a debug message will be logged.
190      *
191      * @return true if message will be logged
192      */

193     public boolean isDebugEnabled()
194     {
195         return m_level <= LEVEL_DEBUG;
196     }
197
198     /**
199      * Log a info message.
200      *
201      * @param message the message
202      */

203     public void info( final String JavaDoc message )
204     {
205         info( message, null );
206     }
207
208     /**
209      * Log a info message with an associated throwable.
210      *
211      * @param message the message
212      * @param throwable the throwable
213      */

214     public void info( final String JavaDoc message,
215                       final Throwable JavaDoc throwable )
216     {
217         output( LEVEL_INFO, LEVEL_INFO_STR, message, throwable );
218     }
219
220     /**
221      * Return true if an info message will be logged.
222      *
223      * @return true if message will be logged
224      */

225     public boolean isInfoEnabled()
226     {
227         return m_level <= LEVEL_INFO;
228     }
229
230     /**
231      * Log a warn message.
232      *
233      * @param message the message
234      */

235     public void warn( final String JavaDoc message )
236     {
237         warn( message, null );
238     }
239
240     /**
241      * Log a warn message with an associated throwable.
242      *
243      * @param message the message
244      * @param throwable the throwable
245      */

246     public void warn( final String JavaDoc message,
247                       final Throwable JavaDoc throwable )
248     {
249         output( LEVEL_WARN, LEVEL_WARN_STR, message, throwable );
250     }
251
252     /**
253      * Return true if a warn message will be logged.
254      *
255      * @return true if message will be logged
256      */

257     public boolean isWarnEnabled()
258     {
259         return m_level <= LEVEL_WARN;
260     }
261
262     /**
263      * Log a error message.
264      *
265      * @param message the message
266      */

267     public void error( final String JavaDoc message )
268     {
269         error( message, null );
270     }
271
272     /**
273      * Log a error message with an associated throwable.
274      *
275      * @param message the message
276      * @param throwable the throwable
277      */

278     public void error( final String JavaDoc message,
279                        final Throwable JavaDoc throwable )
280     {
281         output( LEVEL_ERROR, LEVEL_ERROR_STR, message, throwable );
282     }
283
284     /**
285      * Return true if a error message will be logged.
286      *
287      * @return true if message will be logged
288      */

289     public boolean isErrorEnabled()
290     {
291         return m_level <= LEVEL_ERROR;
292     }
293
294     /**
295      * Get the child logger with specified name.
296      *
297      * @param name the name of child logger
298      * @return the child logger
299      */

300     public Logger getChildLogger( final String JavaDoc name )
301     {
302         return this;
303     }
304
305     /**
306      * Utility method that logs output if level
307      * is enabled.
308      *
309      * @param level the log level
310      * @param type the type string
311      * @param message the message
312      * @param throwable the throwable, may be null
313      */

314     private void output( final int level,
315                          final String JavaDoc type,
316                          final String JavaDoc message,
317                          final Throwable JavaDoc throwable )
318     {
319         if( m_level <= level )
320         {
321             doOutput( type, message, throwable );
322         }
323     }
324
325     /**
326      * Utility method to actually output message to console.
327      *
328      * @param type the type string
329      * @param message the message
330      * @param throwable the throwable, may be null
331      */

332     void doOutput( final String JavaDoc type,
333                    final String JavaDoc message,
334                    final Throwable JavaDoc throwable )
335     {
336         synchronized( System.out )
337         {
338             m_output.println( "[" + type + "] " + message );
339             if( null != throwable )
340             {
341                 throwable.printStackTrace( m_output );
342             }
343         }
344     }
345
346     /**
347      * Utility method so that subclasses can access log level.
348      *
349      * @return log level of logger
350      */

351     final int getLevel()
352     {
353         return m_level;
354     }
355 }
356
Popular Tags