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