阻止Sidekiq在测试中打印“(...)INFO:带有redis选项{}的Sidekiq客户端”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻止Sidekiq在测试中打印“(...)INFO:带有redis选项{}的Sidekiq客户端”相关的知识,希望对你有一定的参考价值。

我使用Rails 4默认测试框架并编写了一些测试,也期望Sidekiq在“后台”中做一些工作。但是当我运行rake test时,我的测试结果看起来像这样:

.............2014-08-01T05:40:52Z 12000 TID-abcdef123 INFO: Sidekiq client with redis options {}
.....................................

Finished in 3.0s, 9.000 runs/s, 150.000 assertions/s.
30 runs, 400 assertions, 0 failures, 0 errors, 0 skips

现在这看起来很好,但是Sidekiq工作人员的日志真的很烦人。为了防止这个日志发生,我在我的worker类中尝试了这个:

class MyWorker
  include Sidekiq::Worker
  sidekiq_options queue: :my_queue

  def initialize
    Rails.logger.level = 2 # set to :warn level
    super
  end

  def perform(movie_id)
    # Rails.logger.level = 0 # set back to :debug level?

    # some code
  end
end

随着Rails.logger.level行评论和取消注释,但记录的行没有消失。当使用rake test运行时,如何防止Sidekiq记录此信息?

答案

您可以将以下行添加到sidekiq初始化程序(config/initializers/sidekiq.rb)以将其关闭:

if Rails.env.test?
  Sidekiq.logger.level = Logger::WARN
end
另一答案

来自的官方推荐

https://github.com/mperham/sidekiq/wiki/Logging#turning-off-logging-in-the-test-environment

就是用

require 'sidekiq/testing'
Sidekiq::Logging.logger = nil

如果使用rspec和rails,这可以在你的spec/rails_helper.rb中。

以上是关于阻止Sidekiq在测试中打印“(...)INFO:带有redis选项{}的Sidekiq客户端”的主要内容,如果未能解决你的问题,请参考以下文章

为 sidekiq 工作人员编写测试

Rails,RabbitMQ和Sidekiq架构[关闭]

Sidekiq 工作人员的不同日志级别 - Ruby 方法?

黑马基础阶段测试题:通过字符输入流读取info.txt中的所有内容,每次读取一行,将每一行的第一个文字截取出来并打印在控制台上。

为啥从 Info.plist 中删除“Main nib file base name”会阻止应用程序执行?

Rails:如何重启sidekiq?