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

Der*_*ley 13 ruby logging rspec

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

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


class Logger
  def info msg
    $logs = msg
    super msg
  end
end
Run Code Online (Sandbox Code Playgroud)

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

hrn*_*rnt 33

使用 StringIO

require 'stringio'
require 'logger'

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

puts strio.string
Run Code Online (Sandbox Code Playgroud)

  • 括号已删除.就个人而言,我更喜欢使用括号,但我编辑它以更符合问题中使用的编码风格. (2认同)
  • FWIW,大量的ruby devs在方括号和定义中用括号括起参数列表.它并不少"红宝石",通常使代码更容易阅读. (2认同)