如何在raven / sentry中记录带有上下文的完整调用堆栈?

时间:2016-05-17 08:28:23

标签: python logging sentry raven

当在调用堆栈的根上捕获引发异常时,我可以在Sentry中的每个调用堆栈级别看到整个上下文。

但是,当我使用captureMessage()时,我无法在Sentry中看到任何上下文。

如果我在下面的代码中使用captureException(),我只能看到调用堆栈的顶部。

try:
    raise Exception('Breakpoint!')
except:
    raven_client.captureException()

换句话说,我希望在Sentry中看到一条带有完整堆栈跟踪和上下文的已记录消息。

1 个答案:

答案 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()