Ruby on rails 使Rails.logger tee写入标准输出
我的Rails.logger工作得很好,非常感谢,但我也希望它能够写入STDOUT(也就是说,不要放弃日志文件,而是将它“Tee”到STDOUT)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 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突出显示源代码行。