• 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志


     log4j向多个文件记录日志

    关键配置,指定想要的日志级别信息输出到指定的日志文件中:

    log4j.appender.errorLogger.Threshold=ERROR
    #扩展,可指定只在子类自己的输出源中输出,不在父类的输出源中输出
    log4j.additivity.errorLogger=false
    

    additivity配置例子参考log4j配置文件中的additivity属性,additivity配置详细log4j additivity解说

    log4j.logger.com.sgcc=debug, platform1
    log4j.additivity.com.sgcc.test.p2=false
    log4j.logger.com.sgcc.test.p1=debug, platform2
    log4j.logger.com.sgcc.test.p2=debug, platform3

    完整配置:

      # 定义缺省的日志级别和输出对象
      log4j.rootLogger=INFO,console,errorLogger,corLogger


    #制定logger的名字,用于外部获取此logger #log4j.logger.tracer=DEBUG,tracer log4j.logger.errorLogger=ERROR,errorLogger log4j.logger.corLogger=INFO,corLogger # 设定错误日志文件的输出模式 log4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorLogger.File=${log.home}/core/error.log log4j.appender.errorLogger.Threshold=ERROR log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定审计日志文件的输出模式 log4j.appender.corLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.corLogger.File=${log.home}/core/cor.log log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定跟踪日志文件的输出模式 #log4j.appender.tracer=org.apache.log4j.DailyRollingFileAppender #log4j.appender.tracer.File=${log.home}/core/tracer.log #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n

      

    可是上面,还是上面指定控制还不是完美控制的,因为log4j记录器默认可输出的级别在输出日志信息级别以上的话都会输出,因为ERROR比INFO、DEBUG等级别高,所以想要INFO级别的日志信息输出到info.log日志文件中、DEBUG级别的日志信息输出到debug.log日志文件中等这样的需要话。需要重写log4j appender类。看代码:

    新建一个类:

    package com.core.util;
    
    import org.apache.log4j.DailyRollingFileAppender;
    import org.apache.log4j.Priority;
    
    public class ICoreDailyRollingFileAppender extends DailyRollingFileAppender {
    
    	@Override
    	public boolean isAsSevereAsThreshold(Priority priority) {
    		
    		return this.getThreshold().equals(priority);
    	}
    }
    

    再到log4j.porperties文件中配置:

    # 定义缺省的日志级别和输出对象
    log4j.rootLogger=INFO,console,errorLogger,corLogger
    
    #制定logger的名字,用于外部获取此logger
    #log4j.logger.tracer=DEBUG,tracer
    
    log4j.logger.errorLogger=ERROR,errorLogger
    log4j.logger.corLogger=INFO,corLogger
    
    # 设定错误日志文件的输出模式
    log4j.appender.errorLogger=com.core.util.ICoreDailyRollingFileAppender
    log4j.appender.errorLogger.File=${log.home}/core/error.log
    log4j.appender.errorLogger.Threshold=ERROR
    log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
    log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
    
    # 设定审计日志文件的输出模式
    log4j.appender.corLogger=com.core.util.ICoreDailyRollingFileAppender
    log4j.appender.corLogger.File=${log.home}/core/cor.log
    log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout
    log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
    
    # 设定跟踪日志文件的输出模式
    #log4j.appender.tracer=com.core.util.ICoreDailyRollingFileAppender
    #log4j.appender.tracer.File=${log.home}/core/tracer.log
    #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout
    #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
    

      OK,

    参考: 

    Log4j按级别输出日志到不同文件配置分析- http://blog.csdn.net/projava/article/details/7344839

  • 相关阅读:
    数据结构与算法-字符串与字符串匹配算法
    操作系统-PV操作的原理和几种常见问题
    操作系统-进程(8)-临界区管理
    利用队列实现逐行打印杨辉三角形的前n行
    操作系统-进程(7)死锁和银行家算法
    计算机网络-网络层(6)ICMP协议
    操作系统-进程(6)管程
    计算机网络-链路层(5)点对点链路控制
    操作系统-进程(5)进程通信机制
    RTSP/RTMP流媒体协议网页无插件直播视频平台浏览器请求地址自带尾缀符解释说明
  • 原文地址:https://www.cnblogs.com/svennee/p/4125996.html
Copyright © 2020-2023  润新知