向哨兵报告错误的aiohttp中间件

aiohttp-sentr的Python项目详细描述


CI Status

用于向Sentry报告失败请求的aiohttp服务器中间件

用法

只需添加SentryMiddleware作为中间件:

fromaiohttpimportwebfromaiohttp_sentryimportSentryMiddlewareapp=web.Application(middlewares=[SentryMiddleware()])

配置

如果要自定义错误报告, 您可以使用可选的sentry_kwargs参数, 这是一个dict的Kwargs传递到较低级别的哨兵库raven。 使用此选项,您可以指定环境详细信息,筛选出特定异常,等等:

fromaiohttpimportwebfromaiohttp_sentryimportSentryMiddlewareapp=web.Application(middlewares=(SentryMiddleware({'environment':'foo','release':'bar','ignore_exceptions':'aiohttp.HTTPClientError'}),# ...),)

如果您使用的是标准库的logging模块, 我们有一个方便的参数帮你修补, 要让记录器调用自动向哨兵发送事件:

警告

这将全局修改日志记录配置 当您实例化中间件时。 即使您最终没有使用中间件实例来处理请求, 你所有的日志都会送到哨兵那里。

importloggingfromaiohttpimportwebfromaiohttp_sentryimportSentryMiddlewareapp=web.Application(middlewares=[SentryMiddleware(patch_logging=True,sentry_log_level=logging.WARNING)],)

将数据附加到事件

默认情况下,aiohttp sentry将此数据与报告的异常一起传递:

  • http方案
  • http方法
  • 网址
  • 查询字符串
  • 请求头(包括cookies)
  • 请求者的IP地址

如果你需要更多的岗哨数据, 可以通过从^{tt1}子类化来实现$ 重写get_extra_data方法, 默认情况下返回以上所有内容。 这就是它的样子:

classDetailedSentryMiddleware(SentryMiddleware):asyncdefget_extra_data(self,request):return{**awaitsuper().get_extra_data(request),'settings':request.app['settings'],}

虽然get_extra_data是一个协程, 这意味着它可以进行数据库查询、api调用, 或其他I/O操作,请小心使用! 确保您理解每次发生错误时执行昂贵操作的含义。 如果错误的根本原因是数据库过载, 你只会让问题变得更糟, 却连你想要的额外信息都得不到。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
mysql java语言非法参数异常?   java绘制控制流图   无法通过java eclipse中的ssh隧道远程连接到mysql数据库   直接在@SuppressWarnings之后出现java Eclipse错误(“未选中”)   java如何使用远程api google应用程序引擎api客户端?   工具栏中的java导航图标颜色未更改?   java返回带有映射子集的实体   java Spring重新加载属性Bean未更新   fileoutputstream正在获取java。木卫一。IOException:流关闭错误,但未显式关闭它   jsp标记显示java。时间使用jstl的LocalDateTime   java如何设置onFailure事件(Spring,Kafka)的超时?   将java元素添加到多个线程中的列表时,会跳过这些元素   JAVAutil。扫描程序Java读取空格后的整数值   java JMonkey过滤器着色器获取片段的世界位置   java从mongodb获取随机值   java如何使用Intent。标记\u活动\u清除\u顶部以清除活动堆栈?   多线程如何控制在多个端口上监听的java服务器应用程序   在具有复合键的相关实体之间插入数据时发生java Hibernate错误