【Sentry使用】使用local scope实现动态添加自定义tag

使用Sentry添加请求特定的自定义tag
本文介绍了如何在使用Sentry时,通过localscope为每个请求动态添加不同的tag,以便在错误报告中包含关键信息如appId和entryId。通过在处理请求的函数内部使用with-scope和scope.set_tag方法,可以确保每个请求的tag是独立且准确的。如果处理函数内部有子进程或子线程,同样需要在子进程中使用with-scope来设置tag。

首先说一下心得:一定要看官方文档,绝大部分的案例及问题官方文档都会有说明


之前用sentry+flask,把失败的响应都传到sentry上。但发现,信息中缺少两个至关重要的定位信息’appId’和’entryId’,我希望它能出现在tags中
在这里插入图片描述

最开始是想通过before_send方法在send前对event进行一些处理,比如添加tag。

import sentry_sdk

def before_send(event, hint):
	event['tag'] = {
   
   'appId':'xxxxx', 'entryId':'xxxxx'}
    return event

sentry_sdk.init(
    dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
    before_send=before_send,
)

经过验证,像上面那样通过给event添加tag键,确实能在tags中设置自定义tag。但问题来了,我的每个请求appId和eventId都不同,那该如何针对每个请求设置不同的event呢?
如果用上面的方式只能实现全局唯一的tag设置,至少我还没找到方法,所以此路不通。
搜索了很久,发现使用local scope可以实现
关于scope的概念,你可以把它看作包含有额外信息的字典,在发送最终信息前,scope会和event融合,发送给sentry服务器,子scope继承父scope的所有信息,而对子scope的修改不会影响到父scope。有没有觉得很像继承实现实例化对象的概念,这样我们就可以针对每个请求,生成一个子scope,再向其中添加tag就好了。实现方式就是在原来每条请求进行处理的函数内,将代码用with-scope包裹,再在包裹的代码开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值