首先要说一下我为什么想要给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日志级别,通常有以下几种方法: 1. **通过配置文件**:最常见的方式是通过修改log4j.properties或log4j.xml配置文件。例如,你可以将某个类或整个包的日志级别设置为WARN: ```xml ```...
本篇我们将深入探讨如何调整log4j的日志级别,以便更好地管理和控制应用程序的日志输出。 首先,我们要理解日志级别在log4j中的含义。Log4j提供了多个预定义的日志级别,按照严重性从低到高排序,包括TRACE、DEBUG...
在Log4j中,控制日志级别主要通过配置文件`log4j.properties`或`log4j.xml`来实现。在提供的压缩包`log4j-demo`中,我们可以找到这样的配置文件。例如,如果我们想要控制特定类`com.example.MyClass`的日志级别为...
Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序运行过程中的事件信息。在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入...
log4j2配置多个日志级别,拿到即可用, 。
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
例如,若要将日志输出到名为"tomcat.log"的文件,并设置日志级别为INFO,"log4j.properties"文件可能包含以下内容: ``` log4j.rootLogger=INFO, FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j....
SQL语句通常会插入日志级别、时间戳、日志信息等字段。 下面是一个简单的`log4j.properties`配置示例,用于将日志写入数据库: ``` log4j.rootLogger=DEBUG, DBAppender log4j.appender.DBAppender=org.apache.log...
2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...
例如,`%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n`会输出时间戳、日志级别、logger名称、行号和日志消息。如果你的需求更复杂,可以继承`PatternLayout`或`TTCCLayout`等类,然后重写`format()`方法,以满足...
然而,Log4j默认提供的日志级别(debug, info, warn, error)可能无法满足所有项目的特定需求。在某些情况下,可能会需要自定义额外的错误级别来更精确地分类和管理日志信息。例如,项目可能需要区分"serious"和...
Log4j是一个广泛使用的Java日志框架,它提供了强大的日志处理功能,包括日志级别控制、自定义日志格式、多路复用等。然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文...
Log4j 日志级别详解 Log4j 是 Java 中一种流行的日志记录工具,用于记录应用程序的运行过程和错误信息。Log4j 的核心组件是日志记录器(Logger),它可以根据不同的级别记录日志信息。在 Log4j 中,日志记录器的...
Log4j作为Java领域广泛应用的日志框架,提供了强大的日志记录功能和灵活的配置。本文将深入探讨log4j的配置以及配置文件的详解。** 首先,我们要理解什么是`log4j.properties`文件。这是log4j框架的配置文件,使用...
我们还定义了四列:logger(记录器名称),level(日志级别),message(日志消息)和timestamp(时间戳)。这些列的值通过`pattern`属性使用Log4j2的转换词来设置。 接着,确保你的项目已经包含了Log4j2和MySQL的...
Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN、ERROR),并允许通过XML、JSON、YAML或纯Java配置文件进行灵活配置。 二、日志数据脱敏概念 日志数据脱敏是指在不影响日志分析的前提下,对敏感信息进行替换、...
Log4j 是一款广泛使用的Java日志记录框架,它提供了灵活的日志配置和丰富的日志级别,便于开发者调试和监控应用程序。在Java开发过程中,如果遇到"log4j:WARN Please initialize the log4j system properly"这样的...
1. **日志级别**:Log4j支持多种日志级别,包括TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。其中,DEBUG用于调试信息,INFO用于一般信息,WARN表示可能出现的问题,ERROR表示运行时错误,FATAL表示严重错误,而...
由于log4j本身并不直接支持Android,我们可以使用log4android,这是一个专门为Android平台设计的log4j实现。在`build.gradle`文件中,添加以下依赖: ```groovy dependencies { implementation '...
以下是一个基本的 `log4j.properties` 示例,用于设置日志级别、输出目的地及格式: ``` log4j.rootLogger=DEBUG, Console, FileAppender # 控制台输出 log4j.appender.Console=org.apache.log4j....