暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

log4j 单独设置某个类或者某个包的级别

伦少的博客 2025-01-02
174

原本的设置

    log4j.rootLogger = INFO, dailyfile


    log4j.appender.dailyfile.DatePattern=.yyyy-MM-dd
    log4j.appender.dailyfile.Threshold = INFO
    log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.dailyfile.File = /var/log/zeppelin/zeppelin.log
    log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
    log4j.appender.dailyfile.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1} %l: %m%n

    配置解析

    rootLogger

    rootLogger:根Logger (日志写出器),可以理解为默认日志写出器

    语法为: log4j.rootLogger = [ level ] , appenderName, …[level]:根Logger的写出日志的级别,这里的level=INFOappenderName:Appenders组件名,这里的appenderName=dailyfile,名称可以自定义,可以同时写多个,逗号分隔

    rootLogger与rootCategory的区别

    rootLogger是新的使用名称,对应Logger类, rootCategory是旧的使用名称,对应原来的Category类。Logger类是Category类的子类,所以,rootCategory是旧的用法,不推荐使用

    Appender(日志信息输出目的地)

    配置格式:log4j.appender.appenderName = className

    appenderName:被Logger器使用的自定义标识符(如:A1、bb、C123都可以) 一般定义时都比较有意义,如:console(控制台)、rollFile(滚动文件)className 可设值项:

    org.apache.log4j.ConsoleAppender :控制台org.apache.log4j.FileAppender:文件org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件org.apache.log4j.RollingFileAppender:文件大小到达指定尺寸的时候产生一个新的文件org.apache.log4j.WriterAppender:将日志信息以流格式发送到任意指定的地方


    参考:https://blog.csdn.net/weixin_58267543/article/details/134306962[1]

    Threshold

    指定日志信息的最低输出级别,默认为DEBUG

    单独设置

    以 org.apache.zeppelin.socket.NotebookServer举例,它的debug日志里包含具体的 SQL

    输出到原文件

      #log4j.appender.dailyfile.Threshold = INFO


      # 这里可以指定包或具体的类,但不能为类中的方法
      log4j.logger.org.apache.zeppelin.socket.NotebookServer = debug

      注释掉dailyfile.Threshold的原因是 NotebookServer 没有单独设置 Appender,也就是使用rootLogger中的 dailyfile ,而 dailyfile 设置了 Threshold = INFO,指定了日志信息的最低输出级别,debug的日志级别高于info,所以不生效,需要去掉该配置

      输出到单独的文件

      即单独为 NotebookServer 设置一个 Appender,这里的Appender同样使用 DailyRollingFileAppender,将日志输出到一个单独的 notebook.log 文件中

        log4j.logger.org.apache.zeppelin.socket.NotebookServer = debug,notebook
        log4j.appender.notebook.DatePattern=.yyyy-MM-dd
        log4j.appender.notebook= org.apache.log4j.DailyRollingFileAppender
        log4j.appender.notebook.File = /var/log/zeppelin/notebook.log
        log4j.appender.notebook.layout = org.apache.log4j.PatternLayout
        log4j.appender.notebook.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1} %l: %m%n

        1.如果设置 dailyfile.Threshold = INFO,那么在 zeppelin.log 中 NotebookServer 的日志级别为 INFO,在 notebook.log 中 NotebookServer 的日志级别为 debug2.如果不设置 dailyfile.Threshold ,那么在 zeppelin.log 和 notebook.log 中对应的日志级别都为 debug3.另外可以设置 NotebookServer 的日志只在 notebook.log 中而不在 zeppelin.log 中打印 :

          log4j.additivity.org.apache.zeppelin.socket.NotebookServer=false
          log4j.additivity.*=false,指定子类不继承父类的设置。


          References

          [1]
          https://blog.csdn.net/weixin_58267543/article/details/134306962

          🧐 分享、点赞、在看,给个3连击👇

          文章转载自伦少的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论