为什么我应该在我的模型类中使用Rails.logger而不是logger

时间:2013-06-11 13:56:17

标签: ruby-on-rails log4r

我是铁路的新手。我正在使用log4r进行日志记录。我观察到,当我在模型中使用记录器时,它不起作用。但是,如果我使用Rails.logger,日志就会好起来的。为什么会这样?请帮我理解。

  def self.create_user_from_params(auth_params)
    Rails.logger.debug "auth params are ";
    return nil;
  end

的工作原理。但如果我使用

  def self.create_user_from_params(auth_params)
    logger.debug "auth params are ";
    return nil;
  end

它不起作用。这是我的log4r yml

log4r_config:
  # define all loggers ...
  loggers:
    - name      : production
      level     : INFO
      trace     : 'false'
      outputters :
      - datefile
    - name      : development
      level     : DEBUG
      trace     : 'true'
      outputters :
      - datefile

  # define all outputters (incl. formatters)
  outputters:
  - type: DateFileOutputter
    name: datefile
    dirname: "log"
    filename: "server.log" # notice the file extension is needed!
    formatter:
      date_pattern: '%H:%M:%S'
      pattern     : '%d %l: %m '
      type        : PatternFormatter

更新我记得我在config / application.rb中添加了'config.active_record.logger = Logger.new(“log / sql.log”)'

我使用它,因为我想将我的sqls记录到单独的文件中。现在我有另一个问题。 如何在不更改config.active_record.logger?

的情况下将sqls记录到单独的文件中

1 个答案:

答案 0 :(得分:0)

看看这个in-depth tutorial on how to use Log4r

具体来说,您的问题可以通过将config.logger设置为Log4r :: Logger [“development”](因此Rails.logger将登录到Log4r)或指定logger = Log4r :: Logger [“development”]来解决。您想要使用“logger”的文件。但是,设置config.logger标志应该与Rails.logger.debug以及logger.debug一起使用。

链接的博客中还详细描述了单独文件中的SQL。基本上,您使用Rails Notification Pipeline并写入记录到另一个文件的自定义记录器。