Una cosa che può essere utile da notare qui: In qualsiasi istanza di una classe che è una sottoclasse di (Rails 5.1) ActiveJob :: Base (o, qualsiasi istanza di classe chiamata da una classe sottoclassificata da ActiveJob :: Base) I normali comandi Rails.logger.info('log this')
verranno registrati nella console di rotaie (presumibilmente tramite STDOUT).
Non ho ancora capito il meccanismo che causa questo dirottamento di Rails.logger, ma puoi passare ad ActiveJob :: Base.logger e usare la conoscenza di questo: (https://github.com/rails/rails/blob/b205ea2dc6c70b2b8e2134640e3056ed33fdc6be/activejob/lib/active_job/logging.rb#L13) per cambiare il comportamento come desideri .
Quindi, questo consente di registrare come si vuole:
1) Inserisci require "active_job/logging"
nel application.rb
2) In config/development.rb (o qualunque ambiente che si desidera) comprendono questa linea:
config.active_job.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new("log/#{Rails.env}.log"))
3) Qualsiasi registrazione all'interno di sottoclassi di ActiveJob, di utilizzare per la registrazione:
ActiveJob::Base.logger.info('(MyJob) Inside of a job but not going to STDOUT')
Se qualcuno può indicare il codice che spiega perché Rails.logger.info
si comporta diversamente quando all'interno di una classe ActiveJob sarebbe una buona lettura.
fonte
2017-10-11 04:15:15
Qualcuno delle risposte fornite ha funzionato per te? – Marklar
no, ho finito con l'abbandonare ActiveJob e mi sono limitato a Delayed :: Job. –