web-dev-qa-db-ja.com

Sidekiqワーカー内にログインします

開発ではtail -f log/development.logを使用し、本番環境ではheroku logsを使用して、sideqikワーカーの進行状況をログに記録しようとしています。

ただし、ワーカー内のすべて、およびワーカーによって呼び出されたすべてはログに記録されません。以下のコードでは、TEST1のみがログに記録されます。

ワーカー内のすべてとワーカーが呼び出すクラスをログに記録するにはどうすればよいですか?

# 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.infoまたはSidekiq.logger.infoがログストリームにログインしない理由がまだわかりません。 Rails.logger.infoputsに置き換えることで機能しました。

15
migu

ワーカー内で使用できるSidekiq.loggerおよび単にlogger参照があります。デフォルトはSTDOUTであり、本番環境での出力を選択したログファイルパスに送信する必要があります。

9
paul

@ migu、config/initializer.rbで以下のコマンドを試しましたか?

Rails.logger = Sidekiq::Logging.logger
1
Sana