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 * <font color="#AA4444">Refrain from using this class directly, use
21 * the {@link Level} class instead</font>.
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 /**
138 * Returns the syslog equivalent of this priority as an integer.
139 * @return The equivalent syslog value.
140 */
141 public
142 final int getSyslogEquivalent() {
143 return syslogEquivalent;
144 }
145
146
147 /**
148 * Returns {@code true} if this level has a higher or equal
149 * level than the level passed as argument, {@code false}
150 * otherwise.
151 * <p/>
152 * <p>You should think twice before overriding the default
153 * implementation of <code>isGreaterOrEqual</code> method.
154 * @param r The Priority to check.
155 * @return true if the current level is greater or equal to the specified Priority.
156 */
157 public boolean isGreaterOrEqual(final Priority r) {
158 return level >= r.level;
159 }
160
161 /**
162 * Returns all possible priorities as an array of Level objects in
163 * descending order.
164 * @return An array of all possible Priorities.
165 *
166 * @deprecated This method will be removed with no replacement.
167 */
168 @Deprecated
169 public static Priority[] getAllPossiblePriorities() {
170 return new Priority[]{Priority.FATAL, Priority.ERROR, Level.WARN,
171 Priority.INFO, Priority.DEBUG};
172 }
173
174
175 /**
176 * Returns the string representation of this priority.
177 * @return The name of the Priority.
178 */
179 @Override
180 public final String toString() {
181 return levelStr;
182 }
183
184 /**
185 * Returns the integer representation of this level.
186 * @return The integer value of this level.
187 */
188 public final int toInt() {
189 return level;
190 }
191
192 /**
193 * @param sArg The name of the Priority.
194 * @return The Priority matching the name.
195 * @deprecated Please use the {@link Level#toLevel(String)} method instead.
196 */
197 @Deprecated
198 public static Priority toPriority(final String sArg) {
199 return Level.toLevel(sArg);
200 }
201
202 /**
203 * @param val The value of the Priority.
204 * @return The Priority matching the value.
205 * @deprecated Please use the {@link Level#toLevel(int)} method instead.
206 */
207 @Deprecated
208 public static Priority toPriority(final int val) {
209 return toPriority(val, Priority.DEBUG);
210 }
211
212 /**
213 * @param val The value of the Priority.
214 * @param defaultPriority The default Priority to use if the value is invalid.
215 * @return The Priority matching the value or the default Priority if no match is found.
216 * @deprecated Please use the {@link Level#toLevel(int, Level)} method instead.
217 */
218 @Deprecated
219 public static Priority toPriority(final int val, final Priority defaultPriority) {
220 return Level.toLevel(val, (Level) defaultPriority);
221 }
222
223 /**
224 * @param sArg The name of the Priority.
225 * @param defaultPriority The default Priority to use if the name is not found.
226 * @return The Priority matching the name or the default Priority if no match is found.
227 * @deprecated Please use the {@link Level#toLevel(String, Level)} method instead.
228 */
229 @Deprecated
230 public static Priority toPriority(final String sArg, final Priority defaultPriority) {
231 return Level.toLevel(sArg, (Level) defaultPriority);
232 }
233 }