简体   繁体   中英

Log inside Sidekiq worker

I'm trying to log the progress of my sideqik worker using tail -f log/development.log in development and heroku logs in production.

However, everything inside the worker and everything called by the worker does not get logged. In the code below, only TEST 1 gets logged.

How can I log everything inside the worker and the classes the worker calls?

# 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

Update

I still don't understand why Rails.logger.info or Sidekiq.logger.info don't log into the log stream. Got it working by replacing Rails.logger.info with puts .

There is a Sidekiq.logger and simply logger reference that you can use within your workers. The default should be to STDOUT and you should just direct your output in production to the log file path of your choice.

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

Rails.logger = Sidekiq::Logging.logger

It works in rails 6:

# config/initializers/sidekiq.rb

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

I've found this solution here , it seems to work well.

Sidekiq uses the Ruby Logger class with default Log Level as INFO , and its settings are independent from Rails.

You may set the Sidekiq Log Level for the Logger used by Sidekiq in config/initializers/sidekiq.rb :

Sidekiq.configure_server do |config|
  config.logger.level = Rails.logger.level
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM