`

为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
可以把配置文件修改后再运行代码测试,我们的修改是成功的
  • 大小: 147.4 KB
分享到:
评论

相关推荐

    动态设置log4j的日志级别

    NULL 博文链接:https://zhangguoli1997.iteye.com/blog/545671

    log4j2配置多个日志级别

    log4j2配置多个日志级别,拿到即可用, 。

    log4j按功能保存日志

    log4j按功能保存日志

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    log4j-如何控制指定类,包的日志输出级别: https://blog.csdn.net/u011479200/article/details/102476242

    log4j.properties配置分级别单独打印

    log4j.properties配置分级别单独打印

    log4j的日志级别的调整

    NULL 博文链接:https://lihaiming.iteye.com/blog/2265106

    logstash 采集log4j日志配置文件

    logstash采集log4j日志发送到es配置文件,可以把日志根据日志级别区分开,一个级别一条日志是es中的一条数据

    tomcat下的log4j日志配置

    tomcat下的log4j日志配置,给tomcat配置log4j有好几种方法,我知道的有: 一、tomcat级别的统一日志管理 二、每个webapp分别配置log4j

    使用Log4j进行日志操作

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    Log4j2实现不同线程不同级别日志输出到不同的文件中

    Log4j2实现不同线程不同级别日志输出到不同的文件中 源码+log4j jar包

    Log4j日志管理系统简单使用说明

     禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。...

    log4j日志级别详细介绍

    公司使用Apache作为Web应用服务器,日志采用log4j组件来做。日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录。 Log4j是Apache基金会的一个项 目,Log4j是一个...

    Log4j日志级别

    java Log4j 日 志 级 别 详 述

    linux基于Log4j应用部署日志级别调整.doc

    基于Apache开源项目Log4j的Web应用,Linux部署控制台日志级别调整。可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式log4j除了可以记录程序运行日志信息外还有一重要的功能就是...

    深入学习log4j

    Loggers组件的主要功能是提供相应API,根据不同配置的loggers将不同级别的log输入到控制台或文件,类似于java中经常用到的System.out.println,但是log4j封装后的loggers组件能够输出更丰富的信息,包括时间,线程,...

    log4j 配置文档(记录日志)

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    log4j相关jar

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过...

    官网原版log4j

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

Global site tag (gtag.js) - Google Analytics