18

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

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

如何记录工作人员内部的所有内容以及工作人员调用的类?

# 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.infoputs.

4

3 回答 3

12

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

于 2013-07-12T04:41:11.033 回答
2

@migu,您是否尝试过以下命令config/initializer.rb

Rails.logger = Sidekiq::Logging.logger
于 2016-03-12T02:19:22.557 回答
2

它适用于rails 6:

# config/initializers/sidekiq.rb

Rails.logger = Sidekiq.logger
ActiveRecord::Base.logger = Sidekiq.logger
于 2021-01-21T13:42:40.957 回答