Je ne peux obtenir aucune sortie de journal de delayed_job
, et je ne suis pas sûr que mes emplois commencent.
Voici mon Procfile:
web: bundle exec Rails server
worker: bundle exec rake jobs:work
worker: bundle exec clockwork app/clock.rb
Et voici le travail:
class ScanningJob
def perform
logger.info "logging from delayed_job"
end
def after(job)
Rails.logger.info "logging from after delayed_job"
end
end
Je vois que les sorties d'horlogerie sortent vers le système et je peux voir l'exécuteur de travail démarrer, mais je ne vois jamais mes instructions de journal frappées. J'ai également essayé puts
en vain.
Mon fichier d'horloge est assez simple:
every(3.seconds, 'refreshlistings') { Delayed::Job.enqueue ScanningJob.new }
Je veux juste que cela fonctionne, et le manque de journalisation signifie que je ne peux pas. Que se passe t-il ici?
Lorsque j'avais besoin d'une sortie de journal à partir de travaux différés, j'ai trouvé cette question assez utile.
Dans config/initializers/delayed_job.rb
J'ajoute la ligne:
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))
Ensuite, dans mon travail, je génère ce journal avec:
Delayed::Worker.logger.debug("Log Entry")
Il en résulte le fichier log/dj.log
en cours d'écriture. Cela fonctionne dans les environnements de développement, de transfert et de production.