ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/Logger.java
Revision: 1.1
Committed: Tue Nov 21 09:39:10 2000 UTC (23 years, 5 months ago) by pjm2
Branch: MAIN
CVS Tags: PROJECT_COMPLETION, HEAD
Log Message:
A standalone version of the Logger for current testing purposes.

File Contents

# User Rev Content
1 pjm2 1.1 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4     import java.util.Date;
5     import java.text.DateFormat;
6     import java.util.Locale;
7    
8     /**
9     * The ScreenLoggerServant is an implementation of the Logger defined
10     * in the IDL interface. It's only purpose is to simply print all the
11     * logging information it receives to the screen.
12     *
13     * @author $Author: tdb1 $
14     * @version $Id: ScreenLoggerServant.java,v 1.7 2000/11/16 17:59:40 tdb1 Exp $
15     */
16     class Logger {
17    
18     //---FINAL ATTRIBUTES---
19    
20     /**
21     * The current CVS revision of this class
22     */
23     public final String REVISION = "$Revision: 1.7 $";
24    
25     //---STATIC METHODS---
26    
27     //---CONSTRUCTORS---
28    
29     /**
30     * Creates a new ScreenLoggerServant.
31     *
32     * @param verbosityLevel the verbosity level that this instance will log at
33     */
34     public Logger(int verbosityLevel) {
35     _verbosityLevel = verbosityLevel;
36     write(this.toString(), Logger.SYSINIT, "started");
37     }
38    
39     //---PUBLIC METHODS---
40    
41     /**
42     * The write() method takes a message, formats it using the
43     * formatLogLine() method, and then outputs it to the screen
44     * using System.out.println(). The source is usually the
45     * calling object, referenced by `this'. The method has been
46     * made synchronized to avoid it being called by two different
47     * objects and the output ending up merged on the screen.
48     *
49     * @param source A string representation of the calling object.
50     * @param verbosity the verbosity of this message
51     * @param message The text to be logged.
52     */
53     public void write(String source, int verbosity, String message) {
54     if (verbosity <= _verbosityLevel) {
55     String line = formatLogLine(source, message);
56     System.out.println(line);
57     }
58     }
59    
60     /**
61     * Overrides the {@link java.lang.Object#toString() Object.toString()}
62     * method to provide clean logging (every class should have this).
63     *
64     * @return the name of this class and its CVS revision
65     */
66     public String toString() {
67     return this.getClass().getName() + "(" + REVISION.substring(11, REVISION.length() - 2) + ")";
68     }
69     //---PRIVATE METHODS---
70    
71     /**
72     * This method generates a nicely formatted line for the log,
73     * including the date/time and the source of the message. The date
74     * and time are formatted using the DateFormat class, and the source
75     * class is formatted using the toString() method found in every
76     * source file. This is then prepended to the message and returned.
77     *
78     * @param source A string representation of the calling object.
79     * @param message The message to be logged.
80     * @return The string to be written to the log.
81     */
82     private String formatLogLine(String source, String message){
83     String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date());
84     return "[" + date + "] " + source + ": " + message;
85     }
86    
87     //---ACCESSOR/MUTATOR METHODS---
88    
89     //---ATTRIBUTES---
90    
91     /**
92     * The verbosity level of this instance
93     */
94     private int _verbosityLevel;
95    
96     //---STATIC ATTRIBUTES---
97    
98     public static final int FATAL=0;
99     public static final int ERROR=1;
100     public static final int WARNING=2;
101     public static final int SYSMSG=3;
102     public static final int SYSINIT=4;
103     public static final int DEBUG=5;
104    
105     }