我正在尝试记录我的Sidekiq工作者的进度。在开发环境中,使用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.info
或Sidekiq.logger.info
无法记录日志信息。通过将Rails.logger.info
替换为puts
,使其工作。
logger.info "Some log"
会记录在我启动bundle exec sidekiq
的终端窗口中,但不会出现在development.log中。我尝试了bundle exec sidekiq 2>&1 | logger -t sidekiq
,但是日志似乎没有任何地方出现。 - migu