为log4j增加日志级别

首先要说一下我为什么想要给log4j增加一个日志级别,自已在开发一个项目时对整个项目的异常处理进行了专门的设计,在处理异常是使用如下方式:
try{
...
}catch(Exception e){
logger.error(e.getMessage(),e);
throw new XXXXException(...);
}

这样在开发过程中,只要把日志级别设为比error级别低就可以打印异常信息,但是问题出现了,开发完成后要给客户演示时,不希望客户看到异常信息,如果演示过程中出现了异常,只把异常信息写入日志中,过后检查日志进行修正,如果要达到这样的目的,我们只把把日志级别设为FATAL,然而FATAL级别是表示会影响程序退出等重大的错误,显然不符合要求
关于log4j的日志级别描述为:
  • DEBUG 表明细粒度信息事件对调试应用程序是非常有帮助的
  • INFO 表明消息在粗粒度级别上突出强调应用程序的运行过程
  • WAEN 表明会出现潜在错误的情形
  • ERROR 表明虽然发生错误事件,但仍然不影响系统的继续运行
  • FATAL 指出每个严重的错误事件将会导致应用程序的退出

此外还有如下两个级别
  • ALL 最低级别,用于打开所有日志记录
  • OFF 最高级别,用于关闭所有日志记录

于是想到给加一个日志级别,查阅了网上的实现,都是在要使用自定义的级别时需要先实例化,不能像上面的方式一样使用,于是开始了log4j源码修改之旅。
下载apache-log4j-1.2.16.zip
打开后找到源码,主要修改如下几个类:Level.java,Category.java,Loglog.java这几个文件(修改后的源码会在附件中),修改完成后,需要对其重新打包,打包时要注意了,使用maven2来进行打包,在控制台下运行命令:mvn compile,看到build successful信息后再运行mvn jar:jar命令即可打包成功,到根目录下去找target目录,看到jar文件了吧,这个就是我们修改之后的jar包了,好了,下面是测试列子:
lo4j.properties

log4j.rootLogger=SERIOUS, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %30c %3x - %m%n

java代码:
import org.apache.log4j.Logger;
public class TestMain1 {
	private static final Logger logger = Logger.getLogger(TestMain1.class);
	public static void main(String[] args) {
		logger.debug("111111111");
		logger.info("111111111");
		logger.warn("111111111");
		logger.serious("111111111");
		logger.error("111111111");
		logger.fatal("111111111");
	}
}


在配置文件里设置的日志级别是我自定义的级别:SERIOUS
运行代码后,打印的信息为:
0    SERIOUS [main]                      TestMain1     - 111111111
0    ERROR [main]                      TestMain1     - 111111111
0    FATAL [main]                      TestMain1     - 111111111
可以把配置文件修改后再运行代码测试,我们的修改是成功的

猜你喜欢

转载自jn-nian.iteye.com/blog/1457325