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 }