1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.log4j;
21
22 import java.io.IOException;
23 import java.io.ObjectInputStream;
24 import java.io.ObjectOutputStream;
25 import java.io.ObjectStreamException;
26 import java.io.Serializable;
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class Level extends Priority implements Serializable {
41
42
43
44
45
46 public static final int TRACE_INT = 5000;
47
48
49 public static final int X_TRACE_INT = DEBUG_INT - 100;
50
51
52
53
54 final static public Level OFF = new Level(OFF_INT, "OFF", 0);
55
56
57
58
59
60 final static public Level FATAL = new Level(FATAL_INT, "FATAL", 0);
61
62
63
64
65 final static public Level ERROR = new Level(ERROR_INT, "ERROR", 3);
66
67
68
69
70 final static public Level WARN = new Level(WARN_INT, "WARN", 4);
71
72
73
74
75
76 final static public Level INFO = new Level(INFO_INT, "INFO", 6);
77
78
79
80
81
82 final static public Level DEBUG = new Level(DEBUG_INT, "DEBUG", 7);
83
84
85
86
87
88
89 public static final Level TRACE = new Level(TRACE_INT, "TRACE", 7);
90
91
92
93
94 final static public Level ALL = new Level(ALL_INT, "ALL", 7);
95
96
97
98
99 static final long serialVersionUID = 3491141966387921974L;
100
101
102
103
104 protected Level(int level, String levelStr, int syslogEquivalent) {
105 super(level, levelStr, syslogEquivalent);
106 }
107
108
109
110
111
112 public static Level toLevel(String sArg) {
113 return (Level) toLevel(sArg, Level.DEBUG);
114 }
115
116
117
118
119
120
121 public static Level toLevel(int val) {
122 return (Level) toLevel(val, Level.DEBUG);
123 }
124
125
126
127
128
129 public static Level toLevel(int val, Level defaultLevel) {
130 switch (val) {
131 case ALL_INT:
132 return ALL;
133 case DEBUG_INT:
134 return Level.DEBUG;
135 case INFO_INT:
136 return Level.INFO;
137 case WARN_INT:
138 return Level.WARN;
139 case ERROR_INT:
140 return Level.ERROR;
141 case FATAL_INT:
142 return Level.FATAL;
143 case OFF_INT:
144 return OFF;
145 case TRACE_INT:
146 return Level.TRACE;
147 default:
148 return defaultLevel;
149 }
150 }
151
152
153
154
155
156
157 public static Level toLevel(String sArg, Level defaultLevel) {
158 if (sArg == null)
159 return defaultLevel;
160
161 String s = sArg.toUpperCase();
162
163 if (s.equals("ALL"))
164 return Level.ALL;
165 if (s.equals("DEBUG"))
166 return Level.DEBUG;
167 if (s.equals("INFO"))
168 return Level.INFO;
169 if (s.equals("WARN"))
170 return Level.WARN;
171 if (s.equals("ERROR"))
172 return Level.ERROR;
173 if (s.equals("FATAL"))
174 return Level.FATAL;
175 if (s.equals("OFF"))
176 return Level.OFF;
177 if (s.equals("TRACE"))
178 return Level.TRACE;
179 return defaultLevel;
180 }
181
182
183
184
185
186
187
188 private void readObject(final ObjectInputStream s) throws IOException, ClassNotFoundException {
189 s.defaultReadObject();
190 level = s.readInt();
191 syslogEquivalent = s.readInt();
192 levelStr = s.readUTF();
193 if (levelStr == null) {
194 levelStr = "";
195 }
196 }
197
198
199
200
201
202
203 private void writeObject(final ObjectOutputStream s) throws IOException {
204 s.defaultWriteObject();
205 s.writeInt(level);
206 s.writeInt(syslogEquivalent);
207 s.writeUTF(levelStr);
208 }
209
210
211
212
213
214
215
216 private Object readResolve() throws ObjectStreamException {
217
218
219
220 if (getClass() == Level.class) {
221 return toLevel(level);
222 }
223
224
225
226 return this;
227 }
228 }