要使用某种新方法调试可能出现的问题,我想在遇到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
答案 0 :(得分:2)
e.backtrace
只是数组,你只能获得最后N个回溯的行数:
# get last 10 lines
e.backtrace[0, 10].join("\n\t")
答案 1 :(得分:0)
而不是alignparentbotton=true
,而只是log(error_message: e.message, backtrace: e.backtrace)
如果仍然太长,请查看logger.error(e)
。它已有详细记录。