Sentry.CaptureException返回事件ID但仪表盘无日志(Go数据库场景)
Sentry事件终端有ID但后台无日志的调试方案
验证初始化配置
- 确认
config.Initialize()中的DSN完全正确:从Sentry项目设置的「Client Keys (DSN)」复制,不要用项目名称或公钥替代 - 检查初始化时是否指定了
Environment字段(如Environment: "dev"),Sentry仪表盘默认会按环境筛选,确保当前查看的环境和上报环境一致 - 程序退出前必须调用
sentry.Flush(time.Second*5):Sentry采用异步上报,若程序崩溃或提前退出,未完成的上报会丢失,确保defer sentry.Flush(...)在初始化后执行
排查过滤与采样规则
- 检查初始化代码中的
SampleRate:若设置为0或极低值,会导致事件被采样丢弃,建议临时设为1.0测试 - 查看Sentry项目后台的「Settings > Filters」:确认没有启用过滤特定消息、错误类型的规则,避免当前事件被过滤
- 检查「Settings > Projects > 你的项目 > Inbound Filters」:关闭「Filter out known errors」等自动过滤规则,测试是否能收到事件
开启Sentry调试日志
初始化时开启Debug模式,获取详细上报过程:
sentry.Init(sentry.ClientOptions{ Dsn: "你的DSN", Debug: true, })
终端会输出上报请求的状态码、错误信息,直接定位是上报失败还是后台未显示
确认项目Slug正确性
之前用项目名称作为slug错误,正确的项目slug在Sentry项目URL中:https://sentry.io/organizations/[org-slug]/projects/[project-slug]/,这里的project-slug才是用于查找事件的正确标识
检查事件隐藏状态
- 进入Sentry后台「Issues > All Issues」,切换到「Hidden」标签,查看是否有被标记为隐藏的事件(如重复事件、自动忽略项)
- 查看「Settings > Projects > 你的项目 > Issue Alert Rules」,确认没有规则将事件自动归档或隐藏
最简代码测试
编写独立测试代码,排除业务逻辑干扰:
package main import ( "time" "github.com/getsentry/sentry-go" ) func main() { if err := sentry.Init(sentry.ClientOptions{Dsn: "你的DSN"}); err != nil { panic(err) } defer sentry.Flush(time.Second * 5) sentry.CaptureMessage("测试Sentry上报") }
若这段代码能成功上报,说明问题出在数据库连接逻辑的上报时机(如Sentry未初始化就调用上报、程序崩溃导致Flush未执行)
内容的提问来源于stack exchange,提问作者vishal
相关产品推荐
相关产品推荐

