首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用log4r设置2个日志文件

用log4r设置2个日志文件
EN

Stack Overflow用户
提问于 2012-01-03 09:26:30
回答 1查看 470关注 0票数 1

我在Rails 2.3.8项目中添加了log4r。我想要创建2个日志文件。

用于应用程序登录(INFO消息)的(application.log)

  • Error消息(信息消息以外的任何消息) (errors.log)

下面是每个记录器的yml配置文件

代码语言:javascript
复制
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

代码语言:javascript
复制
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

下面是初始化两个记录器的代码

代码语言:javascript
复制
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"

这段代码运行良好,但它在errors.log中同时打印这两条消息(我希望第二条消息在application.log上打印)。

是否有通过一个log4r实例拥有2个日志文件的简单方法?

EN

回答 1

Stack Overflow用户

发布于 2012-01-08 23:37:54

我注意到您的"error_config.yml“文件将输出级别定义为”调试“。

代码语言:javascript
复制
loggers:
  - name      : mylogger
    level     : DEBUG

也许你想让它成为“警告”?

代码语言:javascript
复制
loggers:
  - name      : mylogger
    level     : WARN

附注:^_^命名会议非常重要。请友好地阅读你的代码。(通常是你自己)。哪个更清楚?

代码语言:javascript
复制
h = YAML.load(File.open("config/error_config.yml"))
error_config = YAML.load(File.open("config/error_config.yml"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8710123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档