与标题相同:如何在运行rspec时将Rails.logger
打印到控制台/stdout?例如:
Rails.logger.info "I WANT this to go to console/stdout when rspec is running"
puts "Like how the puts function works"
我仍然希望Rails.logger
也去log/test.log
。
与标题相同:如何在运行rspec时将Rails.logger
打印到控制台/stdout?例如:
Rails.logger.info "I WANT this to go to console/stdout when rspec is running"
puts "Like how the puts function works"
我仍然希望Rails.logger
也去log/test.log
。
7条答案
按热度按时间flvlnr441#
对于Rails 4.x,日志级别的配置与Rails 3.x略有不同
将此添加到
config/environment/test.rb
记录器级别在记录器示例上设置,从
config.log_level
开始,位于:https://github.com/rails/rails/blob/v4.2.4/railties/lib/rails/application/bootstrap.rb#L70环境变量
作为一个额外的好处,您可以允许使用一个环境变量覆盖日志级别,该变量具有如下默认值:
然后从shell运行测试:
rxztt3cl2#
对于导轨4,请参见this answer.
对于Rails 3.x,在
config/environments/test.rb
中配置记录器:这会将测试期间记录的任何错误交错到STDOUT。您可能希望将输出路由到STDERR或使用不同的日志级别。
将这些消息发送到控制台和日志文件需要比Ruby内置的Logger类更健壮的东西。logging gem将完成您想要的任务。将它添加到您的
Gemfile
中,然后在config/environments/test.rb
中设置两个appender:vxqlmq5t3#
以background job(&)结尾日志,它将与rspec输出交错。
当您处理完日志后,使用
fg
将其返回到前台,然后像往常一样使用ctrl-c退出tail
。n3h0vuf24#
我喜欢的一个解决方案是这样做的,因为它将rspec输出与实际的rails日志输出分开:
如果您运行的是多窗格终端(如iTerm),这将变得更加有趣,并且您可以同时获得
rspec
和test.log
输出。83qze16e5#
您可以在spec_helper.rb中定义一个方法,该方法将消息发送到Rails.logger.info和put,并将其用于调试:
apeeds0o6#
我在rails 5.0中也遇到过类似的问题。我的api/request规范没有将错误输出到控制台,而是输出到log/test.log文件中。其他测试类型正常地将错误输出到控制台。
将
config.action_dispatch.show_exceptions
更改为false
解决了此问题:41zrol4v7#
除了现有的答案,如果您的要求是打印
STDOUT
中的日志以及日志文件,那么您可以使用日志广播。我的一个用例是rake seed/tasks应该打印
STDOUT
的日志以及日志文件。