当在调用堆栈的根上捕获引发异常时,我可以在Sentry中的每个调用堆栈级别看到整个上下文。
但是,当我使用captureMessage()时,我无法在Sentry中看到任何上下文。
如果我在下面的代码中使用captureException(),我只能看到调用堆栈的顶部。
try:
raise Exception('Breakpoint!')
except:
raven_client.captureException()
换句话说,我希望在Sentry中看到一条带有完整堆栈跟踪和上下文的已记录消息。
答案 0 :(得分:4)
Python SDK能够通过将stack=True
传递给captureMessage来捕获任意堆栈跟踪:
raven_client.captureMessage('hello world', stack=True)
在配置客户端时还可以打开auto_log_stacks
值:
raven_client = Client(..., auto_log_stacks=True)
警告:自动记录堆栈很有用,但在某些常见情况下无法保证准确。它也是一个性能损失,虽然是一个次要的,因为它必须经常呼叫inspect.stack()
。