    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    }