Resque:Exceptions&堆栈跟踪

时间:2012-08-30 15:39:57

标签: ruby-on-rails-3 debugging resque jrubyonrails

我有一个JRuby / Rails应用程序,包括一个用于处理HTTP请求的Web服务器,一个MySQL数据库和一个Resque工作程序来处理排队的作业。当我处于开发模式并且Web应用程序中的某些内容抛出异常时,我在浏览器中获得了一个很好的跟踪,显示抛出的异常,抛出它的行,相关数据和堆栈回溯。

但是,当Resque工作程序中执行异常抛出代码时,即使我知道代码抛出了异常,我什么也得不到。我可以调试的唯一方法是抛出print语句并找出在Resque工作者抛出异常并崩溃之前调用最后一个print语句的位置。

有没有办法让Resque工作者吐出异常日志并将回溯堆叠到日志文件中(崩溃之前),以便我可以看到发生了什么?

编辑 - (感谢@Viren的想法) - 我不想用开始/救援块丢弃我的应用程序代码。我会将开始/救援代码放在某处,以确保记录异常回溯,但我不知道在哪里放置它。

1 个答案:

答案 0 :(得分:0)

您可以将Resque记录器设置为使用Rails记录器。对于完整堆栈跟踪,您可能希望将其设置为DEBUG级别,从而打印出大量信息。你把它放在initializers/resque.rb

Resque.logger = Rails.logger
Resque.logger.level = Logger::DEBUG

还有resque-backtrace gem,虽然它有这个缺点,它会覆盖Resque中的后端,所以现在没有任何作业可以进入错误队列。