Ruby:向字符串变量发送记录器消息?

Ruby:向字符串变量发送记录器消息?,ruby,rspec,logging,Ruby,Rspec,Logging,我有一个小框架,它使用ruby中内置的Logger对象记录一些信息和调试消息。在运行时,这非常有效。在单元测试时(如果重要的话,使用rspec…),我希望将记录的消息转储到内存中的字符串变量中。做这件事最简单的方法是什么 我正在考虑一个monkey补丁,它将取代info和debug方法,如下所示: class Logger def info msg $logs = msg super msg end end 是否有更好的方法将日志消息发送到字符串变量?使用String

我有一个小框架,它使用ruby中内置的Logger对象记录一些信息和调试消息。在运行时,这非常有效。在单元测试时(如果重要的话,使用rspec…),我希望将记录的消息转储到内存中的字符串变量中。做这件事最简单的方法是什么

我正在考虑一个monkey补丁,它将取代info和debug方法,如下所示:


class Logger
  def info msg
    $logs = msg
    super msg
  end
end

是否有更好的方法将日志消息发送到字符串变量?

使用
StringIO

require 'stringio'
require 'logger'

strio = StringIO.new
l = Logger.new strio
l.warn "whee, i am logging to a string!"

puts strio.string

只需删除括号,即可获得rubyish样式。删除括号。就我个人而言,我更喜欢使用括号,但我对其进行了编辑,使其与问题中使用的编码风格更加一致。FWIW,大量ruby开发人员在方法调用和定义中都将参数列表括在括号中。它不亚于“rubysh”,而且通常使代码更易于阅读。