log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中

1.日志的等级DEBUG < INFO < WARN < ERROR < FATAL

2.log4j.properties配置文件详情

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=com.logger.test.Appender  
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=logs/info.log 
   
log4j.logger.debug=debug  
log4j.appender.debug=com.logger.test.Appender 
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=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=logs/error.log  

而实际上这部分代码解决不了按照LOG4J的级别文件进行文件输出。

配置中关键的配置说明是这一句:log4j.appender.info.Threshold = INFO   

而它的作用是输出INFO级别以上的内容到logs/info.log中,所以info.log文件中包含了ERROR级别的文件。

确的解法是:

定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。

  /**
     Check whether the message level is below the appender's
     threshold. If there is no threshold set, then the return value is
     always <code>true</code>.


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

重写 isAsSevereAsThreshold(Priority priority)方法:

package com.logger.test;


import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;


public class Appender extends DailyRollingFileAppender{


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

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

log4j.appender.info=com.logger.test.Appender  

也就是将log4j配置文件注解打开,按照以上配置就可以将对应的日志输出到对应的文件中去

发布了475 篇原创文章 · 获赞 243 · 访问量 146万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览