我有一个JRuby/Rails应用程序,包括一个处理HTTP请求的web服务器、一个MySQL数据库和一个处理排队作业的Resque worker。当我在开发模式下,web应用程序中的某些东西抛出异常时,我在浏览器中得到一个很好的跟踪,显示抛出的异常、抛出的行、相关数据和堆栈回溯。
但是,当在Resque worker中执行抛出异常的代码时,我什么也得不到,即使我知道代码抛出了异常。我可以调试的唯一方法是抛出print语句,并找出在Resque worker抛出异常并崩溃之前最后一条print语句被调用的位置。
有没有办法让Resque worker将异常日志和堆栈跟踪记录到日志文件中(在它崩溃之前),这样我就可以看到发生了什么?
编辑-(感谢你的想法@Viren) -我不想把我的应用程序代码弄得到处都是begin/rescue块。我会把begin/rescue代码放在某个地方,以确保异常回溯被记录下来,但是我不知道把它放在哪里。
发布于 2014-09-19 18:08:24
您可以将Resque记录器设置为使用Rails记录器。对于完整堆栈跟踪,您可能希望将其设置为DEBUG级别,这会打印出大量信息。你把它放在initializers/resque.rb里
Resque.logger = Rails.logger
Resque.logger.level = Logger::DEBUG还有Resque gem,尽管它有这个缺点,它会覆盖resque-backtrace中的后端,所以现在没有作业会出现在错误队列中。
https://stackoverflow.com/questions/12200587
复制相似问题