zoukankan      html  css  js  c++  java
  • Log4j按级别输出日志到不同文件配置分析

    Log4j按级别输出日志到不同文件配置分析

      

    关于Log4j 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的Log4j.properties的设置是这样的关于Log4j 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的Log4j.properties的设置是这样的

    1. log4j.rootLogger=info,stdout,info,debug,error  
    2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    4. log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n  
    5.    
    6. log4j.logger.info=info  
    7. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender  
    8. log4j.appender.info.layout=org.apache.log4j.PatternLayout  
    9. log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n  
    10. log4j.appender.info.datePattern='.'yyyy-MM-dd  
    11. log4j.appender.info.Threshold = INFO   
    12. log4j.appender.info.append=true  
    13. log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log  
    14.    
    15. log4j.logger.debug=debug  
    16. log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender  
    17. log4j.appender.debug.layout=org.apache.log4j.PatternLayout  
    18. log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n  
    19. log4j.appender.debug.datePattern='.'yyyy-MM-dd  
    20. log4j.appender.debug.Threshold = DEBUG   
    21. log4j.appender.debug.append=true  
    22. log4j.appender.debug.File=${webApp.root}/WEB-INF/logs/debug.log  
    23.   
    24. log4j.logger.error=error  
    25. log4j.appender.error=org.apache.log4j.DailyRollingFileAppender  
    26. log4j.appender.error.layout=org.apache.log4j.PatternLayout  
    27. log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n  
    28. log4j.appender.error.datePattern='.'yyyy-MM-dd  
    29. log4j.appender.error.Threshold = ERROR   
    30. log4j.appender.error.append=true  
    31. log4j.appender.error.File=${webApp.root}/WEB-INF/logs/error.log   

    而实际上这部分代码解决不了按照LOG4J的级别文件进行文件输出。

    配置中关键的配置说明是这一句:

    log4j.appender.debug.Threshold = INFO 

    而它的作用是输出INFO级别以上的内容到${webApp.root}/WEB-INF/logs/info.log中,所以info.log文件中包含了ERROR级别的文件。

    正确的解法是:

    定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。

    源代码记载:

    1. public boolean isAsSevereAsThreshold(Priority priority)  
    2.   {  
    3.       return threshold == null || priority.isGreaterOrEqual(threshold);  
    4.   }  

    重写 isAsSevereAsThreshold(Priority priority)方法

    1. public class LogAppender extends DailyRollingFileAppender {  
    2.    
    3.  @Override  
    4.  public boolean isAsSevereAsThreshold(Priority priority) {  
    5.   //只判断是否相等,而不判断优先级   
    6.   return this.getThreshold().equals(priority);  
    7.  }  
    8. }  

    这样,进行唯一判断,只有当Threshold与priority一致时,才进行输出,就实现了真正Log4j按照级别输出日志文件。

    在log4j.properties中,将配置文件作如下修改:

    1. log4j.logger.info=info  
    2. log4j.appender.info=com.company.LogAppender  
    3. log4j.appender.info.layout=org.apache.log4j.PatternLayout  
    4. log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n  
    5. log4j.appender.info.datePattern='.'yyyy-MM-dd  
    6. log4j.appender.info.Threshold = INFO   
    7. log4j.appender.info.append=true  
    8. log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log  

    到此,即完成了按照Log4j按照日志级别输出到不同文件中的功能。

  • 相关阅读:
    xcode12.2上运行平板IOS15.1
    发行版本崩溃,调试版本正常
    freetype安装使用
    码流的宽高和裁剪信息
    Xcode 沙盒选项
    【最新揭秘】百度快收权限如何获得,教你一周快速获得快收权限
    destoon提示http 403 forbidden解决方法
    他们口中的百度SEO快排发包参数到底是什么?
    destoon内容页调取相关内容标签
    destoon百度小程序主动推送插件
  • 原文地址:https://www.cnblogs.com/apache-x/p/5336300.html
Copyright © 2011-2022 走看看