【问题标题】:Ruby: Send logger messages to a string variable?Ruby:将记录器消息发送到字符串变量?
【发布时间】:2009-09-27 18:28:28
【问题描述】:

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

我正在考虑一个猴子补丁来代替 info 和 debug 方法,如下所示:


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

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

【问题讨论】:

    标签: ruby rspec logging


    【解决方案1】:

    使用StringIO

    require 'stringio'
    require 'logger'
    
    strio = StringIO.new
    l = Logger.new strio
    l.warn "whee, i am logging to a string!"
    
    puts strio.string
    

    【讨论】:

    • 去掉括号就可以有红宝石风格了。
    • 括号已删除。就个人而言,我更喜欢使用括号,但我对其进行了编辑以更符合问题中使用的编码风格。
    • FWIW,大量的 ruby​​ 开发人员在方法调用和定义中都将参数列表包装在括号中。它并非不那么“红宝石”,而且通常使代码更易于阅读。
    猜你喜欢
    • 2015-11-07
    • 2015-04-18
    • 2011-05-08
    • 2016-09-11
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多