【问题标题】:Make consistent Rails logging保持一致的 Rails 日志记录
【发布时间】:2014-11-28 05:14:10
【问题描述】:

如何使 Rails 日志记录在所有环境中均等地工作?

  • 目前,当我在 Windows/WEBrick 环境中使用 puts 登录时,输出会出现在控制台中,但不会出现在标准日志文件中。
  • 当我使用Rails.logger 时,消息只记录到日志文件中。

当我同时使用两者时,它会在 Apache/Passenger 环境中出现问题,因为所有控制台输出都被记录到日志文件中,并且每个日志事件都有双行。

【问题讨论】:

    标签: ruby-on-rails apache logging passenger webrick


    【解决方案1】:

    您不应该使用puts 进行真正的日志记录。它可能对调试有用,但它不是正确的日志记录机制。

    如果你想记录一些东西,那么正确的方法是使用Rails.logger

    Rails.logger.info "something"
    

    默认情况下,记录器仅记录日志文件。一些服务器(例如Passenger)也用于在控制台中输出日志,但这不是标准行为。

    如果您还想在控制台中登录,您可以将记录器设置为在开发环境中表现不同(例如)。只需使用自定义操作创建一个新的记录器。

    Rails 记录器是一个 ActiveSupport::Logger,它继承自 Ruby Logger

    例如,要在开发环境中登录控制台,请在开发环境中分配以下记录器

    Rails.logger = ActiveSupport::Logger.new(STDOUT)
    

    如果您想同时记录到文件和控制台,请创建一个代理每个记录器的自定义记录器类。调用两个实例,一个是文件记录器,另一个是控制台记录器。

    但是,最简单的想法是在另一个控制台选项卡中tail -f 开发日志以访问日志条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2014-09-07
      相关资源
      最近更新 更多