【问题标题】:Can I set Log4r log level per file/class?我可以为每个文件/类设置 Log4r 日志级别吗?
【发布时间】:2013-10-02 22:11:22
【问题描述】:

注意:我说的是 Ruby,不是 Rails。

有什么方法可以根据日志记录的类或文件设置 Log4r 级别?

这是我目前对 Log4r 的配置:

---
log4r_config:
  loggers:
    - name: logger
      level: INFO
      outputters:
        - default
  outputters:
    - name: default
      type: StdoutOutputter
      default: true
      formatter:
        type: PatternFormatter
        date_pattern: '%H:%M:%S'
        pattern: '[%l] %d: %m'

现在假设我要调试一个类。有什么方法可以获取记录器的相同实例(因为我想使用相同的模式格式)并将其设置为不同的级别(DEBUG),而不会影响文件外部的级别?

我想我不能从代码中做到这一点,但是是否有一种配置机制可以设置每个文件/类的级别?

作为参考,在 JBoss 应用服务器中,日志级别可以配置每个 Java 包。

【问题讨论】:

    标签: ruby log4r


    【解决方案1】:

    目前,我正在为我需要的每个日志级别使用一个带有单独记录器的解决方法。 目前,我只需要级别DEBUGINFO。我的 log4r.yml 然后看起来像这样:

    ---
    log4r_config:
      loggers:
        - name: debug
          level: DEBUG
          outputters:
            - default
        - name: info
          level: INFO
          outputters:
            - default
      outputters:
        - name: default
          type: StdoutOutputter
          default: true
          formatter:
            type: PatternFormatter
            date_pattern: '%H:%M:%S'
            pattern: '[%l] %d: %m'
    

    然后,我根据特定类所需的级别获取记录器。

    • 如果我需要一个级别为INFO 的记录器,我使用log = Log4r::Logger.get('info') 获取它
    • 如果我需要一个级别为DEBUG 的记录器,我使用log = Log4r::Logger.get('debug') 获取它

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多