2011-05-31 37 views
5

我希望我的延遲作業「代碼」登錄不同的日誌文件以滿足業務需求。所以我在一個名爲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(", ")})") 

這可能是這裏的問題?請幫助

+0

的郵件越來越交付,但該消息沒有得到記錄 – Anand 2011-05-31 06:18:23

回答

9

DelayedJob維護它自己的記錄器,因此您需要將其指向您的特定日誌文件。所以,在你的初始化文件(或者environment.rb中,或者更好,具體delayed_job.rb文件中config/initializers)添加以下內容:

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

我的代碼運行良好在開發和分期環境中! – Anand 2011-05-31 11:24:56

+0

似乎任何文件指針指向DelayedJob :: Worker.logger(defualt Rails.logger)http://groups.google.com/group/delayed_job/browse_thread/thread/5c13d59aa4f5cb41所以..上面的代碼爲我工作! – Anand 2011-05-31 13:40:05

+0

Can Haz upvotes? :-) – Olly 2011-05-31 14:25:01

1

這裏是我的解決方案(與2.1.4測試):

配置/初始化/ delayed_job.rb

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