web-dev-qa-db-ja.com

delay_jobにログインしていますか?

delayed_jobからログ出力を取得できず、ジョブが開始されているかどうかわかりません。

これが私のProcfileです:

web:     bundle exec Rails server
worker:  bundle exec rake jobs:work
worker:  bundle exec clockwork app/clock.rb

そして、ここに仕事があります:

class ScanningJob
  def perform
    logger.info "logging from delayed_job"
  end

  def after(job)
    Rails.logger.info "logging from after delayed_job"
  end
end

システムへの時計仕掛けの出力が表示され、ワー​​カーエグゼキューターが起動しているのを確認できますが、ログステートメントがヒットすることはありません。 putsも試してみましたが、役に立ちませんでした。

私の時計ファイルはとてもシンプルです:

every(3.seconds, 'refreshlistings') { Delayed::Job.enqueue ScanningJob.new }

私はただこれが機能することを望んでいますが、ロギングの欠如は私ができないことを意味します。何が起きてる?

38
Stefan Kendall

Delayed Jobsからのログ出力が必要なとき、 この質問 がかなり役立つことがわかりました。

config/initializers/delayed_job.rb次の行を追加します。

Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))

次に、私の仕事で、このログに次のように出力します。

Delayed::Worker.logger.debug("Log Entry")

これにより、ファイルlog/dj.logに書き込まれます。これは、開発、ステージング、および実稼働環境で機能します。

90
James Chevalier