2017-03-15 2 views
1

新しいメソッドで起こりうる問題をデバッグするには、StandardErrorが発生したときにスタックトレースを記録したいと思います。Rubyの部分的なスタックトレースのトレース

私のケースでは、スタックトレースは非常に長く、最後のいくつかのコールだけが私にとって重要です(潜在的な問題をデバッグするために、誰が呼び出し元であるかを知る必要があります)。

例外を伴ってスタックトレースアソシエーションの切り捨てバージョンをログに記録する方法はありますか?

など。

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

e.backtrace単にアレイであり、あなたは、バックトレースの行の最後のN番号を取得することができます

# get last 10 lines  
e.backtrace[0, 10].join("\n\t") 
0
  1. 代わりのlog(error_message: e.message, backtrace: e.backtrace)それはまだ長すぎるなら、単にlogger.error(e)

  2. config/initializers/backtrace_silencers.rbを見てみましょう。それはよく書かれている。

関連する問題