登录注册
登录Sentry官网(https://sentry.io/)注册账号
创建项目
配置本地的客户端
首先通过 pip 安装 Sentry SDK
pip install raven --upgrade
然后初始化客户端:
from raven import Client
DSN = 'https://****@sentry.io/****'
client = Client(DSN)
最后,在我们需要记录异常的代码处调用 client.captureException() 即可。
try:
1 / 0
except ZeroDivisionError:
client.captureException()
很多时候我们的异常处理应该包含更多的上下文信息,这样对于我们做后续分析会有更多帮助 ,那么我们可以在sentry捕获异常之前加入这些上下文信息。
try:
processing(user, data)
except:
client.user_context({
'user': user.email,
'data': json.dumps(data)
})
client.captureException()
在框架之中嵌入 sentry
我们不可能在每一个可能发生异常代码的地方都调用 sentry,也不可能去修补过去的代码将 sentry 每一个去植入。一个好的建议是,无论何时,你的程序都有统一的异常处理机制,最好是全局的。这样的话,你只要将Sentry写在全局的异常处理器即可。
另外Sentry还对流行的开发框架提供了特别的支持,比如Flask,Django等等,在这些应用中你只要配置就行,不需要你去写什么全局的异常处理(虽然写起来也不难)。
Flask 的 demo
sentry = Sentry(dsn='http://public_key:secret_key@example.com/1')
def create_app():
app = Flask(__name__)
sentry.init_app(app)
return app
Django 的 demo
import os
import raven
INSTALLED_APPS = (
'raven.contrib.django.raven_compat',
)
RAVEN_CONFIG = {
'dsn': 'http://public_key:secret_key@example.com/1',
# If you are using git, you can also automatically
# configure the release based on the git info.
'release': raven.fetch_git_sha(os.path.abspath(os.pardir)),
}
转载链接
https://segmentfault.com/a/1190000014847638
参考链接
https://blog.ansheng.me/article/docker-sentry-django-email-dingtalk/