0

我是Rails的新手。我正在使用 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 记录到单独的文件中?

4

1 回答 1

0

查看有关如何使用 Log4r 的深入教程

具体来说,您的问题可以通过将 config.logger 设置为 Log4r::Logger["development"] (因此 Rails.logger 将记录到 Log4r)或在您想要的文件中指定 logger = Log4r::Logger["development"] 来解决使用“记录器”。然而,设置 config.logger 标志应该适用于 Rails.logger.debug 以及 logger.debug。

链接的博文中也详细描述了单独文件中的 SQL。基本上,您使用 Rails 通知管道并写入一个自定义记录器,该记录器记录到另一个文件。

于 2013-12-01T09:28:49.587 回答