天天看点

为log4j增加日志级别

首先要说一下我为什么想要给log4j增加一个日志级别,自已在开发一个项目时对整个项目的异常处理进行了专门的设计,在处理异常是使用如下方式:

这样在开发过程中,只要把日志级别设为比error级别低就可以打印异常信息,但是问题出现了,开发完成后要给客户演示时,不希望客户看到异常信息,如果演示过程中出现了异常,只把异常信息写入日志中,过后检查日志进行修正,如果要达到这样的目的,我们只把把日志级别设为FATAL,然而FATAL级别是表示会影响程序退出等重大的错误,显然不符合要求

关于log4j的日志级别描述为:

[list]

[*]DEBUG 表明细粒度信息事件对调试应用程序是非常有帮助的

[*]INFO 表明消息在粗粒度级别上突出强调应用程序的运行过程

[*]WAEN 表明会出现潜在错误的情形

[*]ERROR 表明虽然发生错误事件,但仍然不影响系统的继续运行

[*]FATAL 指出每个严重的错误事件将会导致应用程序的退出

[/list]

此外还有如下两个级别

[list]

[*]ALL 最低级别,用于打开所有日志记录

[*]OFF 最高级别,用于关闭所有日志记录

[/list]

于是想到给加一个日志级别,查阅了网上的实现,都是在要使用自定义的级别时需要先实例化,不能像上面的方式一样使用,于是开始了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代码:

在配置文件里设置的日志级别是我自定义的级别:SERIOUS

运行代码后,打印的信息为:

0 SERIOUS [main] TestMain1 - 111111111

0 ERROR [main] TestMain1 - 111111111

0 FATAL [main] TestMain1 - 111111111

可以把配置文件修改后再运行代码测试,我们的修改是成功的

继续阅读