Sentry Python SDK 默认不捕获日志,需显式配置 LoggingIntegration 并在 logging 初始化前调用 init();logger.exception() 或 exc_info=True 才上报 traceback;生产环境须设 debug=False、send_default_pii=False。
直接上结论:Sentry 的 Python SDK 默认不捕获日志(
),必须显式配置
并绑定到
模块,否则
一类调用不会上报——这是生产环境静默失败最常见原因。
为什么
后日志仍不上报?
默认初始化只捕获未处理异常和 HTTP 请求错误,
是独立通道。不手动桥接,日志就永远留在本地文件或控制台。
实操要点:
必须传入
控制哪些日志级别触发 Sentry 事件(
最常用,
易产生噪音)
确保在
或
之前调用
,否则集成可能无法拦截 handler
若用
,需额外加
配合,否则结构化字段丢失
如何让
带完整 traceback 上报?
普通
只传消息文本;只有
或
才会提取当前异常上下文。
立即学习
“
Python免费学习笔记(深入)
”;
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
关键细节:
等价于
,二者都可触发 Sentry 的 stack trace 解析
若手动捕获异常后想上报,必须显式传
,不能只写
Sentry 自动过滤掉
中的
内部帧,但若自定义中间件包装了异常,需确认
未被清空
生产环境必须关闭的两个默认行为
本地开发能用的默认值,在生产中会掩盖问题或拖慢性能。
务必显式覆盖:
:设为
会在 stderr 打印 SDK 内部调试日志,干扰业务日志且暴露敏感配置
:默认开启时可能上传用户 IP、请求头等 PII 数据,违反 GDPR/等保要求;如需部分上下文,改用
回调脱敏
额外建议:
(默认 100),减少内存占用;
(非 1.0)避免突发流量打爆 Sentry 配额
最易被忽略的是日志与异常的归属混淆:同一个错误,既写了
又抛出未捕获异常,会导致 Sentry 收到两条重复事件。上线前检查所有
块——要么只记录、要么只抛出,不要两者都做。
loggingLoggingIntegrationlogginglogger.error()sentry_sdk.init()loggingintegrations=[sentry_sdk.integrations.logging.LoggingIntegration(event_level=logging.ERROR)]event_levelERRORWARNINGlogging.basicConfig()logger.addHandler()sentry_sdk.init()structlogstructlog.stdlib.ProcessorFormatter.wrap_for_formatterlogger.exception()logger.error("msg")logger.exception()logger.error("msg", exc_info=True)logger.exception()logger.error(..., exc_info=True)exc_info=exc_infologger.error(str(e))__traceback__sentry_sdkexc_infodebug=FalseTruesend_default_pii=Falsebefore_sendmax_breadcrumbs=50sample_rate=0.8logger.exception()try/except