我已将以下代码添加到初始化程序中:
require 'delayed/worker'
Delayed::Worker.logger = ActiveSupport::BufferedLogger.new("log/#{Rails.env}_delayed_jobs.log", Rails.logger.level)
module Delayed
class Worker
def say_with_flushing(text, level = Logger::INFO)
if logger
say_without_flushing(text, level)
logger.flush
end
end
alias_method_chain :say, :flushing
end
end
但它似乎只输出像:
2011-09-06T14:02:04-0700:[工人(delayed_job主持人:Caribbean.local pid:80322)] 1个工作以16.5391 j / s处理,0失败... 2011-09-06T14:03:19-0700:[工人(delayed_job主持人:Caribbean.local pid:80322)]邮件测试在0.2072之后完成
...
有没有办法让它实际输出它正在做的事情?理想情况下,我想要获得的是通常在开发模式中看到的实际传出电子邮件内容,但是它会进入delayed_job.log(无论rails环境如何)。
所以没有邮件通过delayed_job,在生产模式下,日志中的输出类似于: [邮件发送至foo@foo.com]
但是我希望得到实际的内容,因为如果我处于开发模式 - (整个电子邮件正文,主题等),它们会被显示,但是再次在delayed_job日志中,因为delayed_job正在处理邮件电子邮件。