[英]Log inside Sidekiq worker
我正在尝试在开发中使用tail -f log/development.log
并在生产中使用heroku logs
来记录我的 sideqik worker 的进度。
但是,worker 内部的所有内容以及 worker 调用的所有内容都不会被记录下来。 在下面的代码中,只有 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
不登录日志 stream。通过将Rails.logger.info
替换为puts
使其工作。
有一个Sidekiq.logger
和简单的logger
参考,您可以在您的工作人员中使用。 默认应为 STDOUT,您应该将生产中的输出定向到您选择的日志文件路径。
@migu,您是否在config/initializer.rb
尝试过以下命令?
Rails.logger = Sidekiq::Logging.logger
它适用于 Rails 6:
# config/initializers/sidekiq.rb
Rails.logger = Sidekiq.logger
ActiveRecord::Base.logger = Sidekiq.logger
我在这里找到了这个解决方案,它似乎运作良好。
Sidekiq 使用 Ruby Logger class,默认日志级别为INFO
,其设置独立于 Rails。
您可以在config/initializers/sidekiq.rb
中为 Sidekiq 使用的Logger
设置 Sidekiq 日志级别:
Sidekiq.configure_server do |config|
config.logger.level = Rails.logger.level
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.