登录Sidekiq工作人员

时间:2013-07-12 01:32:46

标签: ruby-on-rails ruby sidekiq

我正在尝试使用开发中的tail -f log/development.log和生产中的heroku logs来记录我的sideqik worker的进度。

但是,工作人员内部的所有内容以及工作人员调用的所有内容都不会被记录。在下面的代码中,只有TEST 1被记录。

如何记录worker中的所有内容以及worker调用的类?

# app/controllers/TasksController.rb
def import_data
  Rails.logger.info "TEST 1" # shows up in development.log
  DataImportWorker.perform_async
  render "done"           
end

# app/workers/DataImportWorker.rb
class DataImportWorker
  include Sidekiq::Worker

  def perform    
    Rails.logger.info "TEST 2" # does not show up in development.log

    importer = Importer.new
    importer.import_data
  end
end


# app/controllers/services/Importer.rb    
class Importer  
  def import_data
    Rails.logger.info "TEST 3" # does not show up in development.log
  end
end

更新

我仍然不明白为什么Rails.logger.infoSidekiq.logger.info没有登录日志流。通过将Rails.logger.info替换为puts来实现它。

3 个答案:

答案 0 :(得分:9)

您可以在工作人员中使用Sidekiq.logger和简单logger引用。默认值应该是STDOUT,您应该将生产中的输出定向到您选择的日志文件路径。

答案 1 :(得分:1)

@migu,您是否在config/initializer.rb

中尝试了以下命令?
Rails.logger = Sidekiq::Logging.logger

答案 2 :(得分:0)

它适用于 Rails 6:

# config/initializers/sidekiq.rb

Rails.logger = Sidekiq.logger
ActiveRecord::Base.logger = Sidekiq.logger