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.