2

yml 構成ファイルを使用して log4r を構成しようとしています。すべてがドキュメントに従って構成されていますが、ログ メッセージには class_name または trace は含まれません。ただし、 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 に答える