要自定义一个级别,首先我们先来看一下log4j level类的源码:
public class Level extends Priority
implements Serializable
{
public static final int TRACE_INT = 5000;
public static final Level OFF = new Level(2147483647, "OFF", 0);
public static final Level FATAL = new Level(50000, "FATAL", 0);
public static final Level ERROR = new Level(40000, "ERROR", 3);
public static final Level WARN = new Level(30000, "WARN", 4);
public static final Level INFO = new Level(20000, "INFO", 6);
public static final Level DEBUG = new Level(10000, "DEBUG", 7);
public static final Level TRACE = new Level(5000, "TRACE", 7);
}
从上面可看出, 数值越大,这个级别也就越高。
如:我们现在定义一个级别在 warn和 error 之间。数值定位:30050。
已下是整个类的代码:
public class MailLog {
private static Logger logger = Logger.getLogger(MailLog.class);
private static class SeriousLevel extends Level {
private static final long serialVersionUID = 1076913470822079835L;
private SeriousLevel(int level, String name, int sysLogLevel) {
super(level, name, sysLogLevel);
}
}
private static final Level MAIL_LOG_LEVEL = new SeriousLevel(30050,
"SERIOUS", SyslogAppender.LOG_LOCAL0);
public static void mailLog(Object pm_objLogInfo) {
logger.log(MAIL_LOG_LEVEL, pm_objLogInfo);
logger.debug(pm_objLogInfo);
logger.info(pm_objLogInfo);
}
public static void main(String[] args) {
MailLog log = new MailLog();
log.mailLog("serious ****** ");
}
}
------------------------------ log4j.xml ---------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "../WebRoot/WEB-INF/config/log4j/log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="LOG.EMAIL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/EMAIL_LOG.log" />
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5120KB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="info" />
</filter>
</appender>
<root>
<appender-ref ref="LOG.EMAIL" />
</root>
</log4j:configuration>
----------------------------------- 结果 -----------------------------------------
12-10-08 14:55:51 [SERIOUS] other.log4j.self.MailLog {MailLog.java:28} - serious ******
12-10-08 14:55:51 [INFO ] other.log4j.self.MailLog {MailLog.java:30} - serious ******
12-10-08 14:55:51 [WARN ] other.log4j.self.MailLog {MailLog.java:31} - serious ******
12-10-08 14:55:51 [ERROR] other.log4j.self.MailLog {MailLog.java:32} - serious ******
--------------------------------------------------------------