log4j自定义新的级别
来源:互联网 发布:域名注册机构是什么 编辑:程序博客网 时间:2024/06/04 07:14
为不用和其他级别冲突,有时候需要自己定义级别,查看源码,代码如下:
package org.apache.log4j;/** <font color="#AA4444">Refrain from using this class directly, use the {@link Level} class instead</font>. @author Ceki Gülcü */public class Priority { transient int level; transient String levelStr; transient int syslogEquivalent; public final static int OFF_INT = Integer.MAX_VALUE; public final static int FATAL_INT = 50000; public final static int ERROR_INT = 40000; public final static int WARN_INT = 30000; public final static int INFO_INT = 20000; public final static int DEBUG_INT = 10000; //public final static int FINE_INT = DEBUG_INT; public final static int ALL_INT = Integer.MIN_VALUE;通过代码可以出来Level替代了Priority,
那么Level代码如下:
/** Defines the minimum set of levels recognized by the system, that is <code>OFF</code>, <code>FATAL</code>, <code>ERROR</code>, <code>WARN</code>, <code>INFO</code, <code>DEBUG</code> and <code>ALL</code>. <p>The <code>Level</code> class may be subclassed to define a larger level set. @author Ceki Gülcü */public class Level extends Priority implements Serializable { /** * TRACE level integer value. * @since 1.2.12 */ public static final int TRACE_INT = 5000; /** The <code>OFF</code> has the highest possible rank and is intended to turn off logging. */ final static public Level OFF = new Level(OFF_INT, "OFF", 0); /** The <code>FATAL</code> level designates very severe error events that will presumably lead the application to abort. */ final static public Level FATAL = new Level(FATAL_INT, "FATAL", 0); /** The <code>ERROR</code> level designates error events that might still allow the application to continue running. */ final static public Level ERROR = new Level(ERROR_INT, "ERROR", 3); /** The <code>WARN</code> level designates potentially harmful situations. */ final static public Level WARN = new Level(WARN_INT, "WARN", 4); /** The <code>INFO</code> level designates informational messages that highlight the progress of the application at coarse-grained level. */ final static public Level INFO = new Level(INFO_INT, "INFO", 6); /** The <code>DEBUG</code> Level designates fine-grained informational events that are most useful to debug an application. */ final static public Level DEBUG = new Level(DEBUG_INT, "DEBUG", 7);Category如下:
/** * <font color="#AA2222"><b>This class has been deprecated and * replaced by the {@link Logger} <em>subclass</em></b></font>. It * will be kept around to preserve backward compatibility until mid * 2003. * * <p><code>Logger</code> is a subclass of Category, i.e. it extends * Category. In other words, a logger <em>is</em> a category. Thus, * all operations that can be performed on a category can be * performed on a logger. Internally, whenever log4j is asked to * produce a Category object, it will instead produce a Logger * object. Log4j 1.2 will <em>never</em> produce Category objects but * only <code>Logger</code> instances. In order to preserve backward * compatibility, methods that previously accepted category objects * still continue to accept category objects. * * <p>For example, the following are all legal and will work as * expected. * <pre> // Deprecated form: Category cat = Category.getInstance("foo.bar") // Preferred form for retrieving loggers: Logger logger = Logger.getLogger("foo.bar") </pre> * <p>The first form is deprecated and should be avoided. * * <p><b>There is absolutely no need for new client code to use or * refer to the <code>Category</code> class.</b> Whenever possible, * please avoid referring to it or using it. * * <p>See the <a href="../../../../manual.html">short manual</a> for an * introduction on this class. * <p> * See the document entitled <a href="http://www.qos.ch/logging/preparingFor13.html">preparing * for log4j 1.3</a> for a more detailed discussion. * * @author Ceki Gülcü * @author Anders Kristensen */public class Category implements AppenderAttachable { /** The hierarchy where categories are attached to by default. */ //static //public //final Hierarchy defaultHierarchy = new Hierarchy(new // RootCategory(Level.DEBUG)); /** The name of this category. */ protected String name; /** The assigned level of this category. The <code>level</code> variable need not be assigned a value in which case it is inherited form the hierarchy. */ volatile protected Level level; /** The parent of this category. All categories have at least one ancestor which is the root category. */ volatile protected Category parent; /** The fully qualified name of the Category class. See also the getFQCN method. */ private static final String FQCN = Category.class.getName(); protected ResourceBundle resourceBundle; // Categories need to know what Hierarchy they are in protected LoggerRepository repository; AppenderAttachableImpl aai; /** Additivity is set to true by default, that is children inherit the appenders of their ancestors by default. If this variable is set to <code>false</code> then the appenders found in the ancestors of this category are not used. However, the children of this category will inherit its appenders, unless the children have their additivity flag set to <code>false</code> too. See the user manual for more details. */ protected boolean additive = true; /** This constructor created a new <code>Category</code> instance and sets its name. <p>It is intended to be used by sub-classes only. You should not create categories directly. @param name The name of the category. */ protected Category(String name) { this.name = name; } /** Add <code>newAppender</code> to the list of appenders of this Category instance. <p>If <code>newAppender</code> is already in the list of appenders, then it won't be added again. */ synchronized public void addAppender(Appender newAppender) { if(aai == null) { aai = new AppenderAttachableImpl(); } aai.addAppender(newAppender); repository.fireAddAppenderEvent(this, newAppender); } /** If <code>assertion</code> parameter is <code>false</code>, then logs <code>msg</code> as an {@link #error(Object) error} statement. <p>The <code>assert</code> method has been renamed to <code>assertLog</code> because <code>assert</code> is a language reserved word in JDK 1.4. @param assertion @param msg The message to print if <code>assertion</code> is false. @since 1.2 */ public void assertLog(boolean assertion, String msg) { if(!assertion) this.error(msg); } /** Call the appenders in the hierrachy starting at <code>this</code>. If no appenders could be found, emit a warning. <p>This method calls all the appenders inherited from the hierarchy circumventing any evaluation of whether to log or not to log the particular log request. @param event the event to log. */ public void callAppenders(LoggingEvent event) { int writes = 0; for(Category c = this; c != null; c=c.parent) { // Protected against simultaneous call to addAppender, removeAppender,... synchronized(c) {if(c.aai != null) { writes += c.aai.appendLoopOnAppenders(event);}if(!c.additive) { break;} } } if(writes == 0) { repository.emitNoAppenderWarning(this); } } /** Close all attached appenders implementing the AppenderAttachable interface. @since 1.0 */ synchronized void closeNestedAppenders() { Enumeration enumeration = this.getAllAppenders(); if(enumeration != null) { while(enumeration.hasMoreElements()) {Appender a = (Appender) enumeration.nextElement();if(a instanceof AppenderAttachable) { a.close();} } } } /** Log a message object with the {@link Level#DEBUG DEBUG} level. <p>This method first checks if this category is <code>DEBUG</code> enabled by comparing the level of this category with the {@link Level#DEBUG DEBUG} level. If this category is <code>DEBUG</code> enabled, then it converts the message object (passed as parameter) to a string by invoking the appropriate {@link org.apache.log4j.or.ObjectRenderer}. It then proceeds to call all the registered appenders in this category and also higher in the hierarchy depending on the value of the additivity flag. <p><b>WARNING</b> Note that passing a {@link Throwable} to this method will print the name of the <code>Throwable</code> but no stack trace. To print a stack trace use the {@link #debug(Object, Throwable)} form instead. @param message the message object to log. */ public void debug(Object message) { if(repository.isDisabled(Level.DEBUG_INT)) return; if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) { forcedLog(FQCN, Level.DEBUG, message, null); } } /** Log a message object with the <code>DEBUG</code> level including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. <p>See {@link #debug(Object)} form for more detailed information. @param message the message object to log. @param t the exception to log, including its stack trace. */ public void debug(Object message, Throwable t) { if(repository.isDisabled(Level.DEBUG_INT)) return; if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) forcedLog(FQCN, Level.DEBUG, message, t); } /** Log a message object with the {@link Level#ERROR ERROR} Level. <p>This method first checks if this category is <code>ERROR</code> enabled by comparing the level of this category with {@link Level#ERROR ERROR} Level. If this category is <code>ERROR</code> enabled, then it converts the message object passed as parameter
已经被Logger类替代了,修改新的级别,就找到Error类似的级别 拷贝修改即可。
2 0
- log4j自定义新的级别
- log4j自定义级别并将新级别日志信息输出到指定带日期格式的log文件
- log4j自定义级别并将新级别日志信息输出到指定带日期格式的log文件
- log4j自定义日志级别的实例
- 转载 log4j的自定义级别 Java程序
- log4j自定义日志级别
- 自定义log4j日志级别
- 为log4j增加自定义级别
- log4j级别的理解
- Log4j的日志级别
- Log4j的日志级别
- log4j的日志级别
- log4j的日志级别
- log4j的隔离级别
- log4j的日志级别
- Log4j的日志级别
- Log4j的日志级别--总结
- Log4j的输出日志级别
- Spring第七篇【Spring的JDBC模块】
- 有关ubuntu系统下,安装虚拟机和共享文件夹问题
- Sql数据表中的关系
- 读《3D打印从想象到现实》
- STL set
- log4j自定义新的级别
- Flask的URL处理功能详解
- Codeforces 799C Fountains【思维+分类讨论+线段树】
- Mplayer源代码分析
- SharedPreferences--共享参数
- 日常 | 这是第一次也是最后一次
- 深度增强学习David Silver(五)——Model-Free Control
- uva 11039
- 分时线