log4j各个级别日志分类输出到文件

这两天在分析系统debug日志是如何输出到文件的,发现日志有重复打印的问题。info日志中有info,warn
,error级别的日志,这样显然是不合理的。 原因是因为:LOG4J.APPENDER.D.THRESHOLD 表示打印大于、等于该级别的日志,由于ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,所以warn、error级别日志在info中也打印了出来
上面的结果显然不是我们想要的,因为这样的话相当于info日志中含有所有的日志信息,不但造成冗余,而且也会让warn日志跟error日志显得没有存在的必要。更多的情况下我们希望info日志中只有INFO级别的日志,warn日志中只有WARN级别的日志,同样error日志中也只有ERROR级别的日志。

文件依赖

<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
</dependency>
<dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
     <scope>test</scope>
</dependency>
 @Test
    public void testLog(){
        Logger logger = Logger.getLogger(test.class);
        logger.debug("debug,我来了");
        logger.info("info ,我来了");
        logger.warn("warn,我来了");
        logger.error("error,我来了");
        // try {
        //     int i = 1 / 0;
        // }catch (Exception e){
        //     logger.error(e.getMessage(),e);
        // }
    }

log4j.properties配置

##配置根路径,方便统一管理,输出日志会引用该地址
log4j.root=D:/loger
##配置输出日志等级以及输出日志别名,rootLogger是新的使用名称,对应Logger类
##rootCategory是旧的使用名称,对应原来的Category类,Logger类是Category类的子类,所以,rootCategory是旧的用法,不推荐使用
log4j.rootLogger=debug,stdout,debuglog,infolog,warnlog,errorlog
##配置输出日志打印到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
##配置debug日志输出到debuglog文件
log4j.appender.debuglog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debuglog.Threshold = DEBUG
log4j.appender.debuglog.File = ${log4j.root}/logs/logtest/debuglog.log
log4j.appender.debuglog.layout = org.apache.log4j.PatternLayout
log4j.appender.debuglog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
log4j.appender.debuglog.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.debuglog.filter.infoFilter.LevelMin = DEBUG
log4j.appender.debuglog.filter.infoFilter.LevelMax = DEBUG
##配置info信息输出到infolog文件
log4j.appender.infolog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infolog.Threshold = INFO
log4j.appender.infolog.File = ${log4j.root}/logs/logtest/infolog.log
log4j.appender.infolog.layout = org.apache.log4j.PatternLayout
log4j.appender.infolog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
log4j.appender.infolog.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.infolog.filter.infoFilter.LevelMin = INFO
log4j.appender.infolog.filter.infoFilter.LevelMax = INFO
##配置warn信息输出到test_warn文件
log4j.appender.warnlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.warnlog.Threshold = WARN
log4j.appender.warnlog.File = ${log4j.root}/logs/logtest/test_warn.log
log4j.appender.warnlog.layout = org.apache.log4j.PatternLayout
log4j.appender.warnlog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
log4j.appender.warnlog.filter.warnFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.warnlog.filter.warnFilter.LevelMin = WARN
log4j.appender.warnlog.filter.warnFilter.LevelMax=WARN
##配置warn信息输出到test_error文件,此处就不用加过滤器了
log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.Threshold = ERROR
log4j.appender.errorlog.File = ${log4j.root}/logs/logtest/test_error.log
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本参

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值