簡體   English   中英

登錄 Sidekiq worker

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM