[英]Delayed_job is no longer logging
由于某种原因,我的Rails应用程序不再将我的DelayedJob gem的活动记录到单独的日志( delayed_job.log
)或主要的Rails开发日志中。 如果与此相关,我还使用了Workless gem。
它曾经这样说:
2013-06-07T19:16:25-0400: [Worker(delayed_job.workless host:MyNames-MacBook-Pro.local pid:28504)] Starting job worker
2013-06-07T19:16:38-0400: [Worker(delayed_job.workless host:MyNames-MacBook-Pro.local pid:28504)] MyApp#scrape completed after 13.0290
2013-06-07T19:16:38-0400: [Worker(delayed_job.workless host:MyNames-MacBook-Pro.local pid:28504)] 1 jobs processed at 0.0761 j/s, 0 failed ...
2013-06-07T19:16:43-0400: [Worker(delayed_job.workless host:MyNames-MacBook-Pro.local pid:28504)] Exiting...
但是任何日志中都不再显示任何内容。
如何确保DelayedJob活动日志记录到主开发日志中? 我不介意它是否也记录到单独的日志中,但是重要的是我在Mac的控制台中看到了它的活动。
我已经在网上搜索了此问题的答案(例如此处 ,没有任何反应。
这是我的delay_job_config.rb :(在config / initializers中)
Delayed::Worker.sleep_delay = 60
Delayed::Worker.max_attempts = 2
Delayed::Worker.max_run_time = 20.minutes
Delayed::Worker.logger = Rails.logger
Delayed::Worker.logger.auto_flushing = true
如果您想从我的应用中获取更多代码,请告诉我-我们很乐意提供。 非常感谢Rails的新手。
我终于有了这个工作。 感谢Seamus Abshere对这里问题的回答。 我把他下面发布的内容放在初始化文件中。 这有delay_job记录到我的development.rb文件中(huzzah!)。
但是,delay_job仍未登录到我的控制台(由于我仍然不了解的原因)。 我通过打开一个新的控制台选项卡并输入tail -f logs/development.log
解决了这一tail -f logs/development.log
。
但是,与Seamus所写的不同,在Rails 4中不赞成使用auto-flushing=true
,而我的Heroku应用程序崩溃了。 我通过将其从初始化程序文件中删除并将其作为config.autoflush_log = true
放在我的environments/development.rb
文件中来解决此问题。 但是,我发现两种冲洗都不是进行这项工作所必需的。
这是他的代码(没有自动刷新):
file_handle = File.open("log/#{Rails.env}_delayed_jobs.log", (File::WRONLY | File::APPEND | File::CREAT))
# Be paranoid about syncing
file_handle.sync = true
# Hack the existing Rails.logger object to use our new file handle
Rails.logger.instance_variable_set :@log, file_handle
# Calls to Rails.logger go to the same object as Delayed::Worker.logger
Delayed::Worker.logger = Rails.logger
如果以上代码不起作用,请尝试用Rails.logger
替换RAILS_DEFAULT_LOGGER
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.