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

时间:2009-09-27 18:28:28

标签: ruby rspec logging

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

我正在考虑一个替换信息和调试方法的猴子补丁,如下所示:


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

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

1 个答案:

答案 0 :(得分:32)

使用StringIO

require 'stringio'
require 'logger'

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

puts strio.string