我可以为每个文件/类设置Log4r日志级别吗?

时间:2013-10-02 22:11:22

标签: ruby log4r

注意:我说的是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包配置日志记录级别。

1 个答案:

答案 0 :(得分:0)

目前,我正在使用针对我需要的每个日志级别的单独记录器的变通方法。 目前,我只需要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')
  • 获取它