您的位置:首页 > 其它

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

2017-06-26 15:00 330 查看
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配置文件注解打开,按照以上配置就可以将对应的日志输出到对应的文件中去
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐