KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > log4j > Level


1 /*
2  * Copyright 1999-2005 The Apache Software Foundation.
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  */

16
17 // Contributors: Kitching Simon <Simon.Kitching@orange.ch>
18
// Nicholas Wolff
19

20 package org.apache.log4j;
21 import java.io.IOException JavaDoc;
22 import java.io.ObjectInputStream JavaDoc;
23 import java.io.ObjectOutputStream JavaDoc;
24 import java.io.ObjectStreamException JavaDoc;
25 import java.io.Serializable JavaDoc;
26
27 /**
28    Defines the minimum set of levels recognized by the system, that is
29    <code>OFF</code>, <code>FATAL</code>, <code>ERROR</code>,
30    <code>WARN</code>, <code>INFO</code, <code>DEBUG</code> and
31    <code>ALL</code>.
32
33    <p>The <code>Level</code> class may be subclassed to define a larger
34    level set.
35
36    @author Ceki G&uuml;lc&uuml;
37
38  */

39 public class Level extends Priority implements Serializable JavaDoc {
40
41    /**
42     * TRACE level integer value.
43     * @since 1.2.12
44     */

45   public static final int TRACE_INT = 5000;
46
47   /**
48      The <code>OFF</code> has the highest possible rank and is
49      intended to turn off logging. */

50   final static public Level OFF = new Level(OFF_INT, "OFF", 0);
51
52   /**
53      The <code>FATAL</code> level designates very severe error
54      events that will presumably lead the application to abort.
55    */

56   final static public Level FATAL = new Level(FATAL_INT, "FATAL", 0);
57
58   /**
59      The <code>ERROR</code> level designates error events that
60      might still allow the application to continue running. */

61   final static public Level ERROR = new Level(ERROR_INT, "ERROR", 3);
62
63   /**
64      The <code>WARN</code> level designates potentially harmful situations.
65   */

66   final static public Level WARN = new Level(WARN_INT, "WARN", 4);
67
68   /**
69      The <code>INFO</code> level designates informational messages
70      that highlight the progress of the application at coarse-grained
71      level. */

72   final static public Level INFO = new Level(INFO_INT, "INFO", 6);
73
74   /**
75      The <code>DEBUG</code> Level designates fine-grained
76      informational events that are most useful to debug an
77      application. */

78   final static public Level DEBUG = new Level(DEBUG_INT, "DEBUG", 7);
79
80   /**
81     * The <code>TRACE</code> Level designates finer-grained
82     * informational events than the <code>DEBUG</code level.
83    * @since 1.2.12
84     */

85   public static final Level TRACE = new Level(TRACE_INT, "TRACE", 7);
86
87
88   /**
89      The <code>ALL</code> has the lowest possible rank and is intended to
90      turn on all logging. */

91   final static public Level ALL = new Level(ALL_INT, "ALL", 7);
92
93   /**
94    * Serialization version id.
95    */

96   static final long serialVersionUID = 3491141966387921974L;
97
98   /**
99      Instantiate a Level object.
100    */

101   protected
102   Level(int level, String JavaDoc levelStr, int syslogEquivalent) {
103     super(level, levelStr, syslogEquivalent);
104   }
105
106
107   /**
108      Convert the string passed as argument to a level. If the
109      conversion fails, then this method returns {@link #DEBUG}.
110   */

111   public
112   static
113   Level toLevel(String JavaDoc sArg) {
114     return (Level) toLevel(sArg, Level.DEBUG);
115   }
116
117   /**
118     Convert an integer passed as argument to a level. If the
119     conversion fails, then this method returns {@link #DEBUG}.
120
121   */

122   public
123   static
124   Level toLevel(int val) {
125     return (Level) toLevel(val, Level.DEBUG);
126   }
127
128   /**
129     Convert an integer passed as argument to a level. If the
130     conversion fails, then this method returns the specified default.
131   */

132   public
133   static
134   Level toLevel(int val, Level defaultLevel) {
135     switch(val) {
136     case ALL_INT: return ALL;
137     case DEBUG_INT: return Level.DEBUG;
138     case INFO_INT: return Level.INFO;
139     case WARN_INT: return Level.WARN;
140     case ERROR_INT: return Level.ERROR;
141     case FATAL_INT: return Level.FATAL;
142     case OFF_INT: return OFF;
143     case TRACE_INT: return Level.TRACE;
144     default: return defaultLevel;
145     }
146   }
147
148   /**
149      Convert the string passed as argument to a level. If the
150      conversion fails, then this method returns the value of
151      <code>defaultLevel</code>.
152   */

153   public
154   static
155   Level toLevel(String JavaDoc sArg, Level defaultLevel) {
156     if(sArg == null)
157        return defaultLevel;
158     
159     String JavaDoc s = sArg.toUpperCase();
160
161     if(s.equals("ALL")) return Level.ALL;
162     if(s.equals("DEBUG")) return Level.DEBUG;
163     if(s.equals("INFO")) return Level.INFO;
164     if(s.equals("WARN")) return Level.WARN;
165     if(s.equals("ERROR")) return Level.ERROR;
166     if(s.equals("FATAL")) return Level.FATAL;
167     if(s.equals("OFF")) return Level.OFF;
168     if(s.equals("TRACE")) return Level.TRACE;
169     return defaultLevel;
170   }
171
172     /**
173      * Custom deserialization of Level.
174      * @param s serialization stream.
175      * @throws IOException if IO exception.
176      * @throws ClassNotFoundException if class not found.
177      */

178     private void readObject(final ObjectInputStream JavaDoc s) throws IOException JavaDoc, ClassNotFoundException JavaDoc {
179       s.defaultReadObject();
180       level = s.readInt();
181       syslogEquivalent = s.readInt();
182       levelStr = s.readUTF();
183       if (levelStr == null) {
184           levelStr = "";
185       }
186     }
187
188     /**
189      * Serialize level.
190      * @param s serialization stream.
191      * @throws IOException if exception during serialization.
192      */

193     private void writeObject(final ObjectOutputStream JavaDoc s) throws IOException JavaDoc {
194         s.defaultWriteObject();
195         s.writeInt(level);
196         s.writeInt(syslogEquivalent);
197         s.writeUTF(levelStr);
198     }
199
200     /**
201      * Resolved deserialized level to one of the stock instances.
202      * May be overriden in classes derived from Level.
203      * @return resolved object.
204      * @throws ObjectStreamException if exception during resolution.
205      */

206     private Object JavaDoc readResolve() throws ObjectStreamException JavaDoc {
207         //
208
// if the deserizalized object is exactly an instance of Level
209
//
210
if (getClass() == Level.class) {
211             return toLevel(level);
212         }
213         //
214
// extension of Level can't substitute stock item
215
//
216
return this;
217     }
218 }
Popular Tags