zoukankan      html  css  js  c++  java
  • 有效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

  • 相关阅读:
    吸取前人教训,每个程序员都曾犯过的经典错误,你可千万要避免
    程序员帮助妹妹攻破C语言,整理超详细规划,快来看!
    2020年总结:程序员爱用开发工具 Top 100
    程序员为了拿到N+1辞退金,使计让公司辞退自己,网友评论画风突变!
    回顾2020的爷青结:有哪些记忆里的应用正在消逝!
    菜鸟看过来!新的一年,这几点雷区别再踩了
    年龄从不是学习的界限,84岁高龄奶奶自学编程,受苹果公司CEO邀请参加全球开发者大会!
    TIOBE 2月编程语言排行榜出炉:C语言冠军宝座稳定,前十名有什么变化?
    用TensorRT和Numpy编写的Yolov5推理。在【Nvidia Jetson】设备上运行,无需依赖任何pytorch / torchvision
    Example app/api for exposing yolov5 model via flask
  • 原文地址:https://www.cnblogs.com/svennee/p/4125996.html
Copyright © 2011-2022 走看看