【问题标题】: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 开发日志以访问日志条目。