2011-05-31 11 views
5

Quiero mi trabajo retrasado "código" para iniciar la sesión en un archivo de registro diferente para los requerimientos del negocio. Entonces, registro un estado personalizado en un registro llamado dj.log. Dentro del trabajo "serializado", estoy poniendo las instrucciones de registro para iniciar sesión en mi archivo.retardada de empleo no ingresar Producción

Así es como la configuración es

Delayed::Worker.destroy_failed_jobs = false 
Delayed::Worker.sleep_delay = 60 
Delayed::Worker.max_attempts = 10 
Delayed::Worker.delay_jobs = !(Rails.env.test? || Rails.env.development?) #dont use delayed_job in development or test mode 

#Delayed_job custom logger 
DJ_LOGFILE = File.join(Rails.root, 'log', 'dj.log') 

y aquí es el trabajo que los trabajadores realmente hacen

people.each {|p| Mailer.mail(1233, p).deliver; sent_to << p.email }     
    Logger.new(DJ_LOGFILE).info("[DELIVERED] All Emails delivered (#{sent_to.join(", ")})") 

lo que podría ser el problema aquí? por favor ayuda

+0

los correos están siendo entregados, pero el mensaje no está llegando registran – Anand

Respuesta

9

DelayedJob mantiene su propio registrador, por lo que deberá señalarlo a su archivo de registro específico. Así, en su fichero de inicialización (ya sea environment.rb o, mejor, un archivo específico en delayed_job.rbconfig/initializers) añadir lo siguiente:

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

mi código funciona bien en entornos de desarrollo y estadificación bien! – Anand

+0

parece que cualquier apuntador de archivo apunta a DelayedJob :: Worker.logger (defualt Rails.logger) http://groups.google.com/group/delayed_job/browse_thread/thread/5c13d59aa4f5cb41 así que ... ¡el código anterior funcionó para mí! – Anand

+0

Can Haz vota? :-) – Olly

1

Aquí está mi solución (probado con 2.1.4):

config/inicializadores/delayed_job.rb

Delayed::Worker.logger ||= Logger.new(File.join(Rails.root, 'log', 'delayed_job.log')) 
Cuestiones relacionadas