运行 rspec 时如何让 Rails.logger 打印到控制台/标准输出? [英] How to get Rails.logger printing to the console/stdout when running rspec?
问题描述
同标题:如何在运行 rspec 时让 Rails.logger
打印到控制台/标准输出?例如.
Same as title: How to get Rails.logger
printing to the console/stdout when running rspec? Eg.
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
.
I still want Rails.logger
to go to log/test.log
too.
推荐答案
对于 Rails 4,请参阅 this answer.
For Rails 4, see this answer.
对于 Rails 3.x,在 config/environments/test.rb
中配置一个记录器:
For Rails 3.x, configure a logger in config/environments/test.rb
:
config.logger = Logger.new(STDOUT)
config.logger.level = Logger::ERROR
这会将测试期间记录的所有错误交错到 STDOUT.您可能希望将输出路由到 STDERR 或使用不同的日志级别.
This will interleave any errors that are logged during testing to STDOUT. You may wish to route the output to STDERR or use a different log level instead.
将这些消息发送到控制台和日志文件需要比 Ruby 内置的 Logger 类更强大的东西.logging gem 会做你想做的事.将其添加到您的 Gemfile
,然后在 config/environments/test.rb
中设置两个附加程序:
Sending these messages to both the console and a log file requires something more robust than Ruby's built-in Logger class. The logging gem will do what you want. Add it to your Gemfile
, then set up two appenders in config/environments/test.rb
:
logger = Logging.logger['test']
logger.add_appenders(
Logging.appenders.stdout,
Logging.appenders.file('example.log')
)
logger.level = :info
config.logger = logger
这篇关于运行 rspec 时如何让 Rails.logger 打印到控制台/标准输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!