ruby – 在方法中捕获记录器输出

ruby – 在方法中捕获记录器输出,第1张

概述Ruby新手我现在有一个简单的驱动程序脚本,可以在其他ruby文件中运行多个测试脚本.我有一个名为RunScript()的方法来运行测试脚本.记录器在驱动程序脚本中创建为全局变量,以便其他文件中的测试脚本可以使用它.记录器记录到目录中的日志文件. 我想要做的是捕获在RunScript()方法仅运行时发生的日志记录输出,并将其存储为String.所以基本上我想要每个测试脚本的日志输出字符串,并保留存 @H_419_4@ Ruby新手我现在有一个简单的驱动程序脚本,可以在其他ruby文件中运行多个测试脚本.我有一个名为RunScript()的方法来运行测试脚本.记录器在驱动程序脚本中创建为全局变量,以便其他文件中的测试脚本可以使用它.记录器记录到目录中的日志文件.

我想要做的是捕获在RunScript()方法仅运行时发生的日志记录输出,并将其存储为String.所以基本上我想要每个测试脚本的日志输出字符串,并保留存储所有输出的日志文件.

@H_419_4@解决方法 我已经用几种不同的方式完成了这项工作,我发现最方便的是构建一个委托对象,将消息路由到两个或多个记录器:

require 'stringio'require 'logger'class LoggerTee  def initialize *loggers    @loggers = loggers  end  def method_missing meth,*args,&block    @loggers.each { |logger| logger.send(meth,&block) }  endendcapture_stringio = StringIO.newconsole_log = Logger.new(STDOUT)string_log = Logger.new(capture_stringio)log = LoggerTee.new(console_log,string_log)log.deBUG 'Hello world'puts capture_stringio.string

输出:

D,[2013-04-30T18:59:18.026285 #14533] DEBUG -- : Hello worldD,[2013-04-30T18:59:18.026344 #14533] DEBUG -- : Hello world

在此示例中,LoggerTee类使用两个单独的记录器进行实例化,一个用于控制台,另一个用于StringIO实例.生成的LoggerTee实例是任何标准logger对象的替代品.

@H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ 总结

以上是内存溢出为你收集整理的ruby – 在方法中捕获记录器输出全部内容,希望文章能够帮你解决ruby – 在方法中捕获记录器输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1290556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存