[738]Flask集成sentry实现错误监控

2020-01-13 17:43:04 浏览数 (1)

sentry是个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。

flask集成sentry分为4个步骤:

  1. 首先在sentry官网注册1个账号, Sentry官网地址
  2. 然后创建1个新的项目,这里我选择的是flask,这会得到一些关于sdk的使用说明
  3. 接下来创建一个简单的flask项目使用sdk测试一下
  4. 实时在sentry的dashboard的project页面上看到提交过来的异常信息

在flask项目中配置使用sentry,步骤如下:

1、通过pip 安装sentry-sdk

代码语言:javascript复制
pip install --upgrade sentry-sdk[flask]==0.7.3

2、flask初始化app的文件中执行,dsn值直接复制 sentry给出的sdk使用说明中的值就可以

代码语言:javascript复制
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
  dsn="https://70das632c203455ea1ec6b45f9acd844e@sentry.io/1302806",
  integrations=[FlaskIntegration()],
  #environment="dev",
  #send_default_pii=True
)
app = Flask(__name__)

简单配置就实现了错误监控,程序发送错误会发送邮件到配置的邮箱

3、测试报错情况:

代码语言:javascript复制
@app.reoute('debug-sentry')
def trigger_error():
    division_by_zero=1/0

1/0会引发ZeroDivisionError错误

代码语言:javascript复制
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ZeroDivisionError: division by zero

在sentry查看一下效果:

果然很强大,连出错的代码都可以显示出来

行为
  • Flask集成将安装在您的所有应用程序中。它挂钩到Flask的信号,而不是app对象上的任何信号。
  • 每个事件都附有一些数据: 1.除非将send_default_pii设置为true,否则将排除个人可识别信息(例如用户ID,用户名,cookie,授权标头,IP地址)。 2.请求数据附加到所有事件。 3.如果已安装并配置了Flask-Login,则会将用户数据附加到事件。
  • 报告导致内部服务器错误的所有异常。
  • 使用app.logger或任何记录器进行日志记录将在启用日志记录集成时创建面包屑(默认情况下已完成)。

参考:https://blog.csdn.net/ying_ge_/article/details/87937820 https://blog.csdn.net/lcli2009/article/details/83213190 https://www.cnblogs.com/kaerxifa/p/11711841.html

0 人点赞