【问题标题】:Prevent Sidekiq from printing "(...) INFO: Sidekiq client with redis options {}" on tests防止 Sidekiq 在测试中打印“(...) INFO: Sidekiq client with redis options {}”
【发布时间】:2014-08-01 05:51:32
【问题描述】:

我使用 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 工作人员的日志真的很烦人。为防止此日志发生,我已在我的工人班中尝试过:

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 行已注释和未注释,但记录的行并没有消失。 如何防止 Sidekiq 在使用 rake test 运行时记录此问题?

【问题讨论】:

    标签: ruby-on-rails testing logging sidekiq


    【解决方案1】:

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

    if Rails.env.test?
      Sidekiq.logger.level = Logger::WARN
    end
    

    【讨论】:

    • 这不会影响Rails.logger.level 吗?我仍然想在:debug 级别接收来自Rails.logger 的消息。
    • 不,它只影响 Sidekiq.logger
    • 您能否添加一个检查环境是否为test 以便仅针对test 环境更改记录器?像if Rails.env.test? ... end 这样的东西。那我接受你的回答。谢谢! :)
    【解决方案2】:

    来自

    的官方推荐

    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 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 2016-05-13
      • 2015-03-29
      • 2021-07-09
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多