Ruby on rails 使Rails.logger tee写入标准输出

Ruby on rails 使Rails.logger tee写入标准输出,ruby-on-rails,ruby,logging,Ruby On Rails,Ruby,Logging,我的Rails.logger工作得很好,非常感谢,但我也希望它能够写入STDOUT(也就是说,不要放弃日志文件,而是将它“Tee”到STDOUT) 这在Rails 3中可能吗?这个简单的委托记录器应该(*)完成以下任务: class MultiLogger def initialize *loggers @loggers = loggers end def method_missing *args, &blk @loggers.each {|l| l.sen

我的Rails.logger工作得很好,非常感谢,但我也希望它能够写入STDOUT(也就是说,不要放弃日志文件,而是将它“Tee”到STDOUT)


这在Rails 3中可能吗?

这个简单的委托记录器应该(*)完成以下任务:

class MultiLogger
  def initialize *loggers
    @loggers = loggers
  end

  def method_missing *args, &blk
    @loggers.each {|l| l.send *args, &blk }
  end

  def respond_to_missing? *args
    @loggers.all? {|l| l.respond_to? *args }
  end
end

Rails.logger = MultiLogger.new Rails.logger, Logger.new($stdout)

(*)我还没有尝试过它

tail-f$YOUR_LOG_文件有什么问题??很抱歉,这不起作用:写入控制台的内容比写入日志文件的内容多——在我的情况下,只会记录sql语句,而控制台还包含简单的“puts”和漂亮的打印机(PP.PP)的结果。虽然我不确定这是否是这里的代码的错误,因为遗留代码在很大程度上干扰了日志记录。您尚未解释为什么需要此功能。你不能只用外部工具吗,例如:
tail-f
?您可以使用
ObjectSpace#每个_对象
在非记录器日志记录上作弊,以找到所有打开到日志文件的
文件
对象,并将它们重新打开到管道
| tee日志文件
。好的一点遗留+特殊诊断将转到STDOUT,而不是Rails.logger。这使得我需要同步阅读控制台和日志,这是一个乏味而令人沮丧的经历。将所有内容都放在一个流中,无论是日志文件还是控制台都可以,但从技术上讲都是一样的(仍然是一个流),控制台更方便,特别是因为我使用RubyMine突出显示源代码行。