2013-01-31 52 views
30

我無法從delayed_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 } 

我只是想看看這方面的工作,並且缺乏日誌意味着我不能。這裏發生了什麼?

+0

可能重複的[延遲\ _job不記錄](http://stackoverflow.com/questions/9507765/delayed-job-not-logging) – deefour

回答

74

當我需要延遲作業的日誌輸出時,我發現this question會很有幫助。

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在被寫入。這適用於開發,登臺和生產環境。

+12

因爲Rails.root是一個路徑名,可以簡單地做:'延遲:: Worker.logger = Logger.new(Rails.root.join('log','dj.log'))' – Alex

+0

'Delayed :: Worker.logger'已經初始化 – brauliobo