2012-01-03 15 views
1

私はRails 2.3.8プロジェクトにlog4rを追加しました。私は2つのログファイルを作成したい。以下のアプリケーションにログインするためにlog4rで2つのログファイルを設定する

  1. (INFOメッセージ)(application.logで)
  2. エラーメッセージ(情報メッセージ以外のメッセージ)(errors.log)

はそれぞれのための私のYMLの設定ファイルですロガー

error_config.yml (errors.log) 

# *** YAML2LOG4R *** 
error_config: 
    # define all pre config ... 
    pre_config: 
    custom_levels: 
     - DEBUG 
     - INF 
     - PRT 
     - WRN 
     - ERR 
     - FAT 
    global: 
     level: DEBUG 
    root : 
     level: DEBUG 
    parameters: 
     - name : x 
     value : aaa 
     - name : y 
     value : bbb 

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

    # define all outputters (incl. formatters) 
    outputters: 
    - type  : StderrOutputter 
     name  : stderr 
     level : DEBUG 
     only_at : 
     - INF 
     - WRN 
     - FAT 
     formatter: 
     date_pattern: '%y%m%d %H:%M:%S' 
     pattern  : '%d %l: %m ' 
     type  : PatternFormatter 

    - type  : DateFileOutputter 
     name  : logfile 
     level  : DEBUG 
     date_pattern: '%Y%m%d' 
     trunc  : 'false' 
     dirname  : "/home/sameera/workspace/project/log" 
     filename : "errors.log" 
     formatter : 
     date_pattern: '%m/%d/%Y %H:%M:%S' 
     pattern  : '%d %l - %m' 
     type  : PatternFormatter 

application_config.yml (application.log) 

# *** YAML2LOG4R *** 
application_config: 
    # define all pre config ... 
    pre_config: 
    custom_levels: 
     - DEBUG 
     - INF 
     - PRT 
     - WRN 
     - ERR 
     - FAT 
    global: 
     level: DEBUG 
    root : 
     level: DEBUG 
    parameters: 
     - name : x 
     value : aaa 
     - name : y 
     value : bbb 

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

    # define all outputters (incl. formatters) 
    outputters: 
    - type  : StderrOutputter 
     name  : stderr 
     level : DEBUG 
     only_at : 
     - INF 
     - WRN 
     - FAT 
     formatter: 
     date_pattern: '%y%m%d %H:%M:%S' 
     pattern  : '%d %l: %m ' 
     type  : PatternFormatter 

    - type  : DateFileOutputter 
     name  : application 
     level  : DEBUG 
     date_pattern: '%Y%m%d' 
     trunc  : 'false' 
     dirname  : "/home/sameera/workspace/project/log" 
     filename : "application.log" 
     formatter : 
     date_pattern: '%m/%d/%Y %H:%M:%S' 
     pattern  : '%d %l - %m' 
     type  : PatternFormatter 

、次はこのコードは正常に動作しますが、私はapplication.logで上に印刷される第2のメッセージをしたいと、それはどこ(errors.logで両方のメッセージを印刷ロガー

h = YAML.load(File.open("config/error_config.yml")) 
app_log = YAML.load(File.open("config/application_config.yml")) 

log_cfg = YamlConfigurator 
log_cfg['TEST'] = 'foobar' 
log_cfg.decode_yaml h['error_config'] 



applog_cfg = YamlConfigurator 
applog_cfg['TEST'] = 'foobar' 
applog_cfg.decode_yaml app_log['application_config'] 


$ERRORLOG = Log4r::Logger['error_config'] 
$APPLICATION = Log4r::Logger['application_config'] 


$ERRORLOG.debug "info message" 
$APPLICATION.debug "info message" 

の両方を初期化するためのコードです)。

1つのlog4rインスタンスで2つのログファイルを作成する簡単な方法はありますか?

答えて

1

"error_config.yml"ファイルが出力レベルを "デバッグ"として定義していることに気付きました。

loggers: 
    - name  : mylogger 
    level  : DEBUG 

「WARN」にしたいですか?

loggers: 
    - name  : mylogger 
    level  : WARN 

p.s.^_ ^命名の命名は重要です。あなたのコードの読者に親切にしてください。 (通常あなた自身です)。それはより明確ですか?

h = YAML.load(File.open("config/error_config.yml")) 
error_config = YAML.load(File.open("config/error_config.yml")) 
関連する問題