2013-01-31 16 views
30

Ich kann keine Protokollausgabe von delayed_job bekommen, und ich bin meine Jobs beginnen, nicht sicher.Anmelden delayed_job?

Hier ist meine procfile:

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

Und hier ist der Job:

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

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

ich sehe, dass ein Uhrwerk Ausgang System, und ich kann Arbeiter Testamentsvollstrecker nicht einsehen, aber ich habe nie meinen Log sehen Aussagen getroffen. Ich versuchte puts auch ohne Erfolg.

Meine Uhr Datei ist recht einfach:

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

Ich möchte nur diese Arbeit sehen, und der Mangel an Logging bedeutet, kann ich nicht. Was ist denn hier los?

+0

mögliches Duplikat von [verzögert \ _job nicht protokolliert] (http://stackoverflow.com/questions/9507765/delayed-job-not-logging) – deefour

Antwort

74

Wenn ich Logausgabe von Verzögerte Jobs benötigt, fand ich this question recht hilfreich sein.

In config/initializers/delayed_job.rb füge ich die Zeile:

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

Dann in meinem Job, ich Ausgabe in dieses Protokoll mit:

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

Dies führt in der Datei log/dj.log geschrieben wird. Dies funktioniert in Entwicklungs-, Staging- und Produktionsumgebungen.

+12

Da Rails.root ein Pfadname ist, kann man einfach tun: 'Delayed :: Worker.logger = Logger.new (Rails.root.join ('log', 'dj.log')) '' – Alex

+0

Verzögerte :: Worker.logger' bereits initialisiert – brauliobo