001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache license, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the license for the specific language governing permissions and
015 * limitations under the license.
016 */
017 package org.apache.log4j;
018
019 /**
020 * <em style="color:#A44">Refrain from using this class directly, use
021 * the {@link Level} class instead.</em>
022 */
023 public class Priority {
024
025 /**
026 * The <code>OFF</code> has the highest possible rank and is
027 * intended to turn off logging.
028 */
029 public static final int OFF_INT = Integer.MAX_VALUE;
030 /**
031 * The <code>FATAL</code> level designates very severe error
032 * events that will presumably lead the application to abort.
033 */
034 public static final int FATAL_INT = 50000;
035 /**
036 * The <code>ERROR</code> level designates error events that
037 * might still allow the application to continue running.
038 */
039 public static final int ERROR_INT = 40000;
040 /**
041 * The <code>WARN</code> level designates potentially harmful situations.
042 */
043 public static final int WARN_INT = 30000;
044 /**
045 * The <code>INFO</code> level designates informational messages
046 * that highlight the progress of the application at coarse-grained
047 * level.
048 */
049 public static final int INFO_INT = 20000;
050 /**
051 * The <code>DEBUG</code> Level designates fine-grained
052 * informational events that are most useful to debug an
053 * application.
054 */
055 public static final int DEBUG_INT = 10000;
056 //public final static int FINE_INT = DEBUG_INT;
057 /**
058 * The <code>ALL</code> has the lowest possible rank and is intended to
059 * turn on all logging.
060 */
061 public static final int ALL_INT = Integer.MIN_VALUE;
062
063 /**
064 * @deprecated Use {@link Level#FATAL} instead.
065 */
066 @Deprecated
067 public static final Priority FATAL = new Level(FATAL_INT, "FATAL", 0);
068
069 /**
070 * @deprecated Use {@link Level#ERROR} instead.
071 */
072 @Deprecated
073 public static final Priority ERROR = new Level(ERROR_INT, "ERROR", 3);
074
075 /**
076 * @deprecated Use {@link Level#WARN} instead.
077 */
078 @Deprecated
079 public static final Priority WARN = new Level(WARN_INT, "WARN", 4);
080
081 /**
082 * @deprecated Use {@link Level#INFO} instead.
083 */
084 @Deprecated
085 public static final Priority INFO = new Level(INFO_INT, "INFO", 6);
086
087 /**
088 * @deprecated Use {@link Level#DEBUG} instead.
089 */
090 @Deprecated
091 public static final Priority DEBUG = new Level(DEBUG_INT, "DEBUG", 7);
092
093 /*
094 * These variables should be private but were not in Log4j 1.2 so are left the same way here.
095 */
096 transient int level;
097 transient String levelStr;
098 transient int syslogEquivalent;
099
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 }