2013-01-31 10 views
30

Non riesco a ottenere alcuna uscita di registro da delayed_job e non sono sicuro che i miei lavori stiano iniziando.Accesso in delayed_job?

Ecco la mia Procfile:

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

E qui è il lavoro:

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

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

vedo che le uscite di movimento a orologeria al sistema, e posso vedere esecutore operaio di partenza, ma non ho mai vedere il mio registro affermazioni colpite. Ho provato anche puts senza alcun risultato.

Il mio file di clock è piuttosto semplice:

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

Voglio solo vedere questo lavoro, e la mancanza di registrazione significa che non posso. Cosa sta succedendo qui?

+0

possibile duplicato di [ritardato \ _job non registrazione] (http://stackoverflow.com/questions/9507765/delayed-job-not-logging) – deefour

risposta

74

Quando avevo bisogno dell'output di registro da lavori in ritardo, ho trovato this question essere abbastanza utile.

In config/initializers/delayed_job.rb ho aggiungere la riga:

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

Poi, nel mio lavoro, ho in uscita a questo registro con:

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

Questo si traduce in file log/dj.log in fase di scrittura. Questo funziona negli ambienti di sviluppo, di staging e di produzione.

+12

Poiché Rails.root è un Pathname, si può semplicemente fare: 'Ritardato :: Worker.logger = Logger.new (Rails.root.join ('log', 'dj.log')) ' – Alex

+0

' Delayed :: Worker.logger' è già inizializzato – brauliobo