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