使用yml配置程序的Log4r:日志消息不包含跟踪

时间:2015-06-12 11:52:16

标签: ruby log4r

我正在尝试使用yml配置文件配置log4r。根据文档配置所有内容,但日志消息不包含class_name或trace。但是它在没有yml的情况下手动配置工作正常,但由于它不能提供配置记录器的灵活性,我无法这样做。根据文档log4r config,记录器应该包含跟踪

  

trace:true

我在config和logger实例中添加了trace:true。但它没有成功。格式化程序模式中的%C 输出所使用的记录器的名称,即

logger = Log4r::Logger["development"]

格式提供日志消息
150612 17:05:25 [development] DEBUG: hello there

我的config.rb

application_config:
  # define all pre config ...
  pre_config:
    custom_levels:
      - DEBUG
      - INFO
      - PRINT
      - WARN
      - ERROR
      - FATAL
    global:
      level: DEBUG
      trace: 'true'
    root:
      level: DEBUG
      trace: 'true'
    parameters:
      - name   : x
        value  : aaa
      - name   : y
        value  : bbb

  # define all loggers ...
  loggers:
    - name      : development
      level     : DEBUG
      additive  : 'false'
      trace     : 'true'
      outputters:
        - stderr
        - logfile

    - name      : production
      level     : WARN
      additive  : 'false'
      trace     : 'true'
      outputters:
        - logfile


  # define all outputters (incl. formatters)
  outputters:
    - type     : StdoutOutputter
      name     : stderr
      level    : DEBUG
      formatter:
        date_pattern: '%y%m%d %H:%M:%S'
        pattern     : "%d [%c] %l: %m "
        type        : PatternFormatter


    - type        : DateFileOutputter
      name        : logfile
      level       : DEBUG
      date_pattern: '%Y%m%d'
      trunc       : 'false'
      dirname     : "logs"
      filename: "development.log"
      formatter   :
        date_pattern: '%y%m%d %H:%M:%S'
        pattern     : '%d %C %l: %m'
        type        : PatternFormatter

和我的logger.rb类

require 'log4r'
require 'log4r/yamlconfigurator'
require 'log4r/outputter/datefileoutputter'
require 'log4r/outputter/consoleoutputters'    
yml_config = YAML.load_file(File.expand_path('../../yaml/log4r.yml', __FILE__))
Log4r::YamlConfigurator.decode_yaml yml_config['application_config']
module MyLogger
  def ms_logger
    Log4r::YamlConfigurator['class_name']= class_name

    return @ms_logger if @ms_logger

    @ms_logger = Log4r::Logger["environment"]
    @ms_logger.trace = true
    @ms_logger
  end

end

我将模块包含在我需要添加记录器的类中,并调用了记录器方法

  

ms_logger.info(“你好那里”)

1 个答案:

答案 0 :(得分:1)

为什么不尝试手动配置而不包括YML配置器,这对我有用