在Ruby中记录部分异常堆栈跟踪

时间:2017-03-15 06:38:38

标签: ruby

要使用某种新方法调试可能出现的问题,我想在遇到StandardError时记录堆栈跟踪。

在我的情况下,堆栈跟踪非常长,只有最后几次调用对我来说很重要(为了调试可能的问题,我需要知道谁是调用者)。

有没有办法记录与例外的堆栈跟踪关联的截断版本?

E.g。

def some_unreliable_method begin # do unreliable things rescue => e log( error_message: e.message, backtrace: e.backtrace # the full stack trace is too long ) # recover from exception end end

2 个答案:

答案 0 :(得分:2)

e.backtrace只是数组,你只能获得最后N个回溯的行数:

# get last 10 lines    
e.backtrace[0, 10].join("\n\t")

答案 1 :(得分:0)

  1. 而不是alignparentbotton=true,而只是log(error_message: e.message, backtrace: e.backtrace)

  2. 如果仍然太长,请查看logger.error(e)。它已有详细记录。