`

Log4j按级别输出日志到不同文件配置分析

阅读更多

 

log4j.rootLogger=info,stdout,info,debug,error
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 

log4j.logger.info=info 
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.info.layout=org.apache.log4j.PatternLayout 
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.info.datePattern='.'yyyy-MM-dd 
log4j.appender.info.Threshold = INFO 
log4j.appender.info.append=true 
log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log 

log4j.logger.debug=debug 
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.debug.layout=org.apache.log4j.PatternLayout 
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.debug.datePattern='.'yyyy-MM-dd 
log4j.appender.debug.Threshold = DEBUG 
log4j.appender.debug.append=true 
log4j.appender.debug.File=${webApp.root}/WEB-INF/logs/debug.log 

log4j.logger.error=error 
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.error.layout=org.apache.log4j.PatternLayout 
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.error.datePattern='.'yyyy-MM-dd 
log4j.appender.error.Threshold = ERROR 
log4j.appender.error.append=true 
log4j.appender.error.File=${webApp.root}/WEB-INF/logs/error.log

 

 

  而实际上这部分代码解决不了按照LOG4J的级别文件进行文件输出。
  配置中关键的配置说明是这一句:
  log4j.appender.info.Threshold = INFO 
  而它的作用是输出INFO级别以上的内容到${webApp.root}/WEB-INF/logs/info.log中,所以info.log文件中包含了ERROR级别的文件。

  正确的解法是:
  定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。
  源代码记载:

public boolean isAsSevereAsThreshold(Priority priority) { 
   return threshold == null || priority.isGreaterOrEqual(threshold); 
} 

   

   重写 isAsSevereAsThreshold(Priority priority)方法

public class LogAppender extends DailyRollingFileAppender { 
   @Override 
   public boolean isAsSevereAsThreshold(Priority priority) { 
      //只判断是否相等,而不判断优先级 
      return this.getThreshold().equals(priority); 
   } 
} 

   这样,进行唯一判断,只有当Threshold与priority一致时,才进行输出,就实现了真正Log4j按照级别输出日志文件。
 

  在log4j.properties中,将配置文件作如下修改:

log4j.appender.info=com.company.LogAppender 
log4j.appender.info.layout=org.apache.log4j.PatternLayout 
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n 
log4j.appender.info.datePattern='.'yyyy-MM-dd 
log4j.appender.info.Threshold = INFO 
log4j.appender.info.append=true 
log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log 

 

分享到:
评论

相关推荐

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

    在“Log4j2实现不同线程不同级别日志输出到不同的文件中”这个主题中,我们将深入探讨如何利用Log4j2实现这一高级日志管理需求。 1. **日志级别**: - 在Log4j2中,日志级别包括DEBUG、INFO、WARN、ERROR、FATAL...

    log4j按功能保存日志

    在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...

    log4j2在项目中的配置,对不同级别的日志进行不同文件的存储

    本文将详细解释如何配置Log4j2以实现不同级别的日志分别存储到不同的文件中。 首先,确保在项目中正确引入了Log4j2的jar包。通常,这可以通过在Maven或Gradle构建文件中添加依赖来完成。对于Maven,可以在pom.xml...

    log4j日志配置以及配置文件详解

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    Log4j按级别输出日志到不同文件的实现方法

    以下是一个基于文本配置(`log4j.properties`)的示例,展示了如何设置不同的日志级别输出到各自的文件: ```properties # 设置root logger级别为info,并将其输出到stdout和多个文件appender log4j.rootLogger=...

    mybatis,log4j打印日志到后台和文件

    本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** 在 MyBatis 中,我们通常会依赖日志框架如 Log4j、Logback 或 JDK 内置的日志系统。Log4j 以其强大的功能...

    log4j(二):动态配置日志输出路径

    上述配置中,`log4j.appender.FILE.File`指定了日志文件的路径,`${user.home}/logs/myapp.log`表示日志将被写入用户主目录下的logs文件夹中的myapp.log文件。通过改变这个路径,我们就能动态地改变日志输出的位置。...

    log4j 写多个日志文件,按照日期每天都记

    通过上述配置,`log4j`就能够按照日期每天创建新的日志文件,并且可以根据需求定制不同类别的日志输出。这对于大型系统的监控和维护来说,是非常重要的功能。在实际开发中,根据项目规模和需求,可能还需要考虑日志...

    Log4j 把不同包的日志打印到不同位置

    这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...

    log4j多文件输出打印

    本话题将深入探讨如何使用Log4j实现多文件输出打印,以及自定义日志的配置。 首先,我们要理解Log4j的基本工作原理。Log4j的核心组件包括Logger、Appender和Layout。Logger负责生成日志事件,Appender则负责接收...

    配置好log4j的eclipse简单工程,每天输出到一个日志文件中,该文件名为:“XXX_年月日时分.log”的形式

    本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...

    tomcat下的log4j日志配置

    5. **重启 Tomcat**:重启 Tomcat 后,相应的日志文件将按照 `log4j.properties` 文件中的设置生成。 **优点**:灵活性高,可以针对每个应用定制化日志配置;便于管理和追踪。 **总结**:根据项目的需求选择合适的...

    动态设置log4j的日志级别

    本文将详细讲解如何动态设置Log4j的日志级别,以满足不同场景下的需求。 首先,我们要理解日志级别的概念。Log4j提供了多个日志级别,从低到高依次为:DEBUG、INFO、WARN、ERROR和FATAL。不同的日志级别用于记录...

    log4j2.xml记录日志到到数据库

    1. **配置文件**:如`log4j2.xml`,这是Log4j2的配置中心,定义了日志记录的策略、级别、输出目标等。 2. **日志记录器(Logger)**:负责收集和处理日志事件。 3. **日志级别(Level)**:如`TRACE`, `DEBUG`, `...

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    在本文中,我们将深入探讨如何配置log4j,以便将日志信息输出到项目中的特定文件夹。 首先,我们需要创建一个`log4j.properties`或`log4j.xml`配置文件,这个文件通常放在项目的`src/main/resources`目录下。在这个...

    log4j配置 输出日志 案例

    本文将深入讲解如何配置log4j以实现日志输出到控制台和文件,并提供相关代码实例和案例分析。** ### 一、Log4j简介 Log4j是Apache组织开发的一个开源项目,用于生成日志信息。它提供了灵活的配置方式,支持多种输出...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

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

    在Log4j中,控制日志级别主要通过配置文件`log4j.properties`或`log4j.xml`来实现。在提供的压缩包`log4j-demo`中,我们可以找到这样的配置文件。例如,如果我们想要控制特定类`com.example.MyClass`的日志级别为...

Global site tag (gtag.js) - Google Analytics