ruby – 在方法中捕获记录器输出
发布时间:2020-12-17 03:05:16 所属栏目:百科 来源:网络整理
导读:Ruby新手我现在有一个简单的驱动程序脚本,可以在其他ruby文件中运行多个测试脚本.我有一个名为RunScript()的方法来运行测试脚本.记录器在驱动程序脚本中创建为全局变量,以便其他文件中的测试脚本可以使用它.记录器记录到目录中的日志文件. 我想要做的是捕获
Ruby新手我现在有一个简单的驱动程序脚本,可以在其他ruby文件中运行多个测试脚本.我有一个名为RunScript()的方法来运行测试脚本.记录器在驱动程序脚本中创建为全局变量,以便其他文件中的测试脚本可以使用它.记录器记录到目录中的日志文件.
我想要做的是捕获在RunScript()方法仅运行时发生的日志记录输出,并将其存储为String.所以基本上我想要每个测试脚本的日志输出字符串,并保留存储所有输出的日志文件. 解决方法
我已经用几种不同的方式完成了这项工作,我发现最方便的是构建一个委托对象,将消息路由到两个或多个记录器:
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) } end end capture_stringio = StringIO.new console_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 world D,[2013-04-30T18:59:18.026344 #14533] DEBUG -- : Hello world 在此示例中,LoggerTee类使用两个单独的记录器进行实例化,一个用于控制台,另一个用于StringIO实例.生成的LoggerTee实例是任何标准logger对象的替代品. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Fatal error: Uncaught SoapFault exception: [Client] loo
- XML处理数据
- ruby-on-rails – Rails和RSpec:`rake spec`运行所有规格两
- Num58 Oracle总结
- ruby-on-rails-3 – 在Rails 3中递归渲染集合
- C++ map的创建(STL map的创建)详解
- Flash Builder4.6 破解方法的实践
- SQLLite (三):sqlite3_prepare_v2,sqlite3_step
- react-native开发异常处理——LaunchAgents目录异常
- Flex 3 mx:List 上下移动demo