延迟作业未登录生产

我希望我的延迟作业“代码”登录不同的日志文件以满足业务需求。 所以我在名为dj.log的日志中记录自定义状态。 在“序列化”作业中,我将日志语句记录到我的文件中。

这是设置的方式

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') 

这是工人实际做的工作

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

这可能是什么问题? 请帮忙

DelayedJob维护它自己的记录器,因此您需要将其指向您的特定日志文件。 因此,在初始化文件(environment.rb或更好, config/initializers的特定delayed_job.rb文件)中添加以下内容:

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

问题是这个错误: https : //github.com/collectiveidea/delayed_job/issues/382 。 。 。 。 。

这是我的解决方案(使用2.1.4测试):

配置/初始化/ delayed_job.rb

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