You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Python Sentry仅捕获foo包错误,排除bar包错误?

问题分析与解决方案

你确实误解了in_app_include的作用——这个配置只是用来在Sentry后台区分应用内代码和第三方代码的显示逻辑,并不会过滤掉来自非指定模块的错误。Sentry默认会捕获所有未被捕获的全局异常,不管这些异常来自哪个模块,所以当前配置下,bar里的Bar error也会被上报。

要实现仅捕获foo包内的错误,你需要用Sentry的before_send钩子,在事件发送到Sentry服务器前做过滤判断:

修改foo的初始化配置

在foo的__init__.py中,给sentry_sdk.init添加before_send参数,检查异常的栈帧是否包含foo模块的代码:

import sentry_sdk
from sentry_sdk.utils import get_stacktrace

def filter_sentry_events(event, hint):
    # 获取异常的栈帧信息
    stacktrace = get_stacktrace(hint)
    if not stacktrace:
        return None
    
    # 检查是否有栈帧属于foo包
    has_foo_frame = any(
        frame.get('module', '').startswith('foo.') 
        for frame in stacktrace
    )
    
    # 只有包含foo模块的栈帧时,才发送事件
    return event if has_foo_frame else None

sentry_sdk.init(
    dsn="blablabla",
    traces_sample_rate=1.0, 
    before_send=filter_sentry_events
)

额外说明

  • 如果bar中的异常是被主动捕获处理的,Sentry本来就不会上报;只有未被捕获的全局异常才会被默认捕获。
  • 不要在bar中随意调用sentry_sdk.init重复初始化,这会覆盖foo的配置;也不建议用sentry_sdk.disable(),这会完全关闭Sentry,导致foo的错误也无法上报。

内容的提问来源于stack exchange,提问作者Munshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:38:16