[英]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.