1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache license, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the license for the specific language governing permissions and
15 * limitations under the license.
16 */
17 package org.apache.log4j;
18
19 /**
20 * <em style="color:#A44">Refrain from using this class directly, use
21 * the {@link Level} class instead.</em>
22 */
23 public class Priority {
24
25 /**
26 * The <code>OFF</code> has the highest possible rank and is
27 * intended to turn off logging.
28 */
29 public static final int OFF_INT = Integer.MAX_VALUE;
30 /**
31 * The <code>FATAL</code> level designates very severe error
32 * events that will presumably lead the application to abort.
33 */
34 public static final int FATAL_INT = 50000;
35 /**
36 * The <code>ERROR</code> level designates error events that
37 * might still allow the application to continue running.
38 */
39 public static final int ERROR_INT = 40000;
40 /**
41 * The <code>WARN</code> level designates potentially harmful situations.
42 */
43 public static final int WARN_INT = 30000;
44 /**
45 * The <code>INFO</code> level designates informational messages
46 * that highlight the progress of the application at coarse-grained
47 * level.
48 */
49 public static final int INFO_INT = 20000;
50 /**
51 * The <code>DEBUG</code> Level designates fine-grained
52 * informational events that are most useful to debug an
53 * application.
54 */
55 public static final int DEBUG_INT = 10000;
56 //public final static int FINE_INT = DEBUG_INT;
57 /**
58 * The <code>ALL</code> has the lowest possible rank and is intended to
59 * turn on all logging.
60 */
61 public static final int ALL_INT = Integer.MIN_VALUE;
62
63 /**
64 * @deprecated Use {@link Level#FATAL} instead.
65 */
66 @Deprecated
67 public static final Priority FATAL = new Level(FATAL_INT, "FATAL", 0);
68
69 /**
70 * @deprecated Use {@link Level#ERROR} instead.
71 */
72 @Deprecated
73 public static final Priority ERROR = new Level(ERROR_INT, "ERROR", 3);
74
75 /**
76 * @deprecated Use {@link Level#WARN} instead.
77 */
78 @Deprecated
79 public static final Priority WARN = new Level(WARN_INT, "WARN", 4);
80
81 /**
82 * @deprecated Use {@link Level#INFO} instead.
83 */
84 @Deprecated
85 public static final Priority INFO = new Level(INFO_INT, "INFO", 6);
86
87 /**
88 * @deprecated Use {@link Level#DEBUG} instead.
89 */
90 @Deprecated
91 public static final Priority DEBUG = new Level(DEBUG_INT, "DEBUG", 7);
92
93 /*
94 * These variables should be private but were not in Log4j 1.2 so are left the same way here.
95 */
96 transient int level;
97 transient String levelStr;
98 transient int syslogEquivalent;
99
100 /**
101 * Default constructor for deserialization.
102 */
103 protected Priority() {
104 level = DEBUG_INT;
105 levelStr = "DEBUG";
106 syslogEquivalent = 7;
107 }
108
109 /**
110 * Instantiate a level object.
111 * @param level The level value.
112 * @param levelStr The level name.
113 * @param syslogEquivalent The equivalent syslog value.
114 */
115 protected Priority(final int level, final String levelStr, final int syslogEquivalent) {
116 this.level = level;
117 this.levelStr = levelStr;
118 this.syslogEquivalent = syslogEquivalent;
119 }
120
121 /**
122 * Two priorities are equal if their level fields are equal.
123 * @param o The Object to check.
124 * @return true if the objects are equal, false otherwise.
125 *
126 * @since 1.2
127 */
128 @Override
129 public boolean equals(final Object o) {
130 if (o instanceof Priority) {
131 final Priority r = (Priority) o;
132 return this.level == r.level;
133 }
134 return false;
135 }
136
137 @Override
138 public int hashCode() {
139 return this.level;
140 }
141
142 /**
143 * Returns the syslog equivalent of this priority as an integer.
144 * @return The equivalent syslog value.
145 */
146 public
147 final int getSyslogEquivalent() {
148 return syslogEquivalent;
149 }
150
151
152 /**
153 * Returns {@code true} if this level has a higher or equal
154 * level than the level passed as argument, {@code false}
155 * otherwise.
156 * <p>
157 * You should think twice before overriding the default
158 * implementation of <code>isGreaterOrEqual</code> method.
159 * </p>
160 * @param r The Priority to check.
161 * @return true if the current level is greater or equal to the specified Priority.
162 */
163 public boolean isGreaterOrEqual(final Priority r) {
164 return level >= r.level;
165 }
166
167 /**
168 * Returns all possible priorities as an array of Level objects in
169 * descending order.
170 * @return An array of all possible Priorities.
171 *
172 * @deprecated This method will be removed with no replacement.
173 */
174 @Deprecated
175 public static Priority[] getAllPossiblePriorities() {
176 return new Priority[]{Priority.FATAL, Priority.ERROR, Level.WARN,
177 Priority.INFO, Priority.DEBUG};
178 }
179
180
181 /**
182 * Returns the string representation of this priority.
183 * @return The name of the Priority.
184 */
185 @Override
186 public final String toString() {
187 return levelStr;
188 }
189
190 /**
191 * Returns the integer representation of this level.
192 * @return The integer value of this level.
193 */
194 public final int toInt() {
195 return level;
196 }
197
198 /**
199 * @param sArg The name of the Priority.
200 * @return The Priority matching the name.
201 * @deprecated Please use the {@link Level#toLevel(String)} method instead.
202 */
203 @Deprecated
204 public static Priority toPriority(final String sArg) {
205 return Level.toLevel(sArg);
206 }
207
208 /**
209 * @param val The value of the Priority.
210 * @return The Priority matching the value.
211 * @deprecated Please use the {@link Level#toLevel(int)} method instead.
212 */
213 @Deprecated
214 public static Priority toPriority(final int val) {
215 return toPriority(val, Priority.DEBUG);
216 }
217
218 /**
219 * @param val The value of the Priority.
220 * @param defaultPriority The default Priority to use if the value is invalid.
221 * @return The Priority matching the value or the default Priority if no match is found.
222 * @deprecated Please use the {@link Level#toLevel(int, Level)} method instead.
223 */
224 @Deprecated
225 public static Priority toPriority(final int val, final Priority defaultPriority) {
226 return Level.toLevel(val, (Level) defaultPriority);
227 }
228
229 /**
230 * @param sArg The name of the Priority.
231 * @param defaultPriority The default Priority to use if the name is not found.
232 * @return The Priority matching the name or the default Priority if no match is found.
233 * @deprecated Please use the {@link Level#toLevel(String, Level)} method instead.
234 */
235 @Deprecated
236 public static Priority toPriority(final String sArg, final Priority defaultPriority) {
237 return Level.toLevel(sArg, (Level) defaultPriority);
238 }
239 }