2

我正在尝试使用 yml 配置文件配置 log4r。一切都按照文档进行配置,但日志消息不包括 class_name 或跟踪。但是,它可以在没有 yml 的情况下进行手动配置,但由于它不提供配置记录器的灵活性,所以我不能那样做。根据文档log4r config,记录器应包含跟踪

痕迹:真

我从配置和记录器实例中添加了 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("你好")

4

1 回答 1

1

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

于 2015-07-02T05:03:42.263 回答