2013-01-31 22 views
30

Tôi không thể nhận bất kỳ kết xuất nhật ký nào từ delayed_job và tôi không chắc chắn công việc của mình đang bắt đầu.Đang đăng nhập vào busy_job?

Dưới đây là Procfile tôi:

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

Và đây là công việc:

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

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

tôi thấy rằng kết quả đầu ra đồng hồ với hệ thống ra, và tôi có thể thấy công nhân thi hành di chúc bắt đầu, nhưng tôi không bao giờ thấy đăng nhập của tôi báo cáo hit. Tôi đã thử puts cũng không có kết quả.

tập đồng hồ của tôi là khá đơn giản:

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

Tôi chỉ muốn nhìn thấy làm việc này, và thiếu logging có nghĩa là tôi không thể. Những gì đang xảy ra ở đây?

+0

có thể trùng lặp của [bị trì hoãn \ _job không ghi nhật ký] (http://stackoverflow.com/questions/9507765/delayed-job-not-logging) – deefour

Trả lời

74

Khi tôi cần đầu ra của nhật ký từ Công việc bị trì hoãn, tôi thấy this question là khá hữu ích.

Trong config/initializers/delayed_job.rb tôi thêm dòng:

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

Sau đó, trong công việc của tôi, tôi ra để log này với:

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

Điều này dẫn đến các tập tin log/dj.log được ghi vào. Điều này làm việc trong môi trường phát triển, dàn dựng và sản xuất.

+12

Vì Rails.root là một tên đường dẫn, người ta chỉ có thể làm: 'Trì hoãn :: Worker.logger = Logger.new (Rails.root.join ('log', 'dj.log')) ' – Alex

+0

' Delayed :: Worker.logger' đã được khởi tạo – brauliobo