log4j记录不同的日志_Log4j多文件保存不同等级日志信息

在实际项目开发中有时候我们需要把不同等级的日志信息记录在不同的文件内,例如:希望等级为INFO的日志保存在一个文件中,而等级为ERROR的日志保存在另外一个文件中。这样一旦项目某个功能出了问题我们就可以只看保存ERROR日志信息的文件即可。

这时,Log4j中自带的文件生成策略类型就不能够满足我们的要求,我们需要自己写一个类来继承相关相关类并覆盖相应方法即可,下面以DailyRollingFileAppender为例:

log4j.propertieslog4j.rootLogger=INFO,stdout,infoTarget,errorTarget

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}|%p|%C|%M|%L|%m%n

log4j.appender.infoTarget=com.zws.log.MyDailyRollingFileAppender

log4j.appender.infoTarget.layout=org.apache.log4j.PatternLayout

log4j.appender.infoTarget.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}|%p|%C|%M|%L|%m%n

log4j.appender.infoTarget.datePattern='.'yyyy-MM-dd

log4j.appender.infoTarget.Threshold = INFO

log4j.appender.infoTarget.append=true

log4j.appender.infoTarget.File=${catalina.home}/logs/app/itc/info.log

log4j.appender.errorTarget=com.zws.log.MyDailyRollingFileAppender

log4j.appender.errorTarget.layout=org.apache.log4j.PatternLayout

log4j.appender.errorTarget.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}|%p|%C|%M|%L|%m%n

log4j.appender.errorTarget.datePattern='.'yyyy-MM-dd

log4j.appender.errorTarget.Threshold = ERROR

log4j.appender.errorTarget.append=true

log4j.appender.errorTarget.File=${catalina.home}/logs/app/error.log

MyDailyRollingFileAppender.javapackage com.zws.log;

import org.apache.log4j.DailyRollingFileAppender;

import org.apache.log4j.Priority;

/**

* 等级为ERROR的日志单独在一个文件里面

* @author wensh.zhu

*

*/

public class MyDailyRollingFileAppender extends DailyRollingFileAppender {

@Override

public boolean isAsSevereAsThreshold(Priority priority) {

String level = priority.toString();

if (level.equalsIgnoreCase("ERROR")) {

//this.getThreshold()即为配置文件中Threshold属性

return this.getThreshold().equals(priority);

}

return super.isAsSevereAsThreshold(priority);

}

}

这里有两个需要注意的地方,第一个地方是在log4j.properties文件中log4j.appender.infoTarget.Threshold属性一定要指定,属性值为等级(INFO,ERROR等),后面需要用到此属性进行判断是否要写入文件,第二个个地方是类MyDailyRollingFileAppender继承了DailyRollingFileAppender并重写了isAsSevereAsThreshold方法,此方法决定等级为Threshold属性值的日志信息是否要写入日志。本例中当调用error方法写入错误日志的时候,此日志信息写入到Threshold属性值为ERROR的目的地文件中,即${catalina.home}/logs/app/error.log文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值