View Javadoc

    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 }