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 }