在Python中如何向Sentry发送日志文件附件?
正确实现方案
1. 版本要求
首先确保你安装的sentry-sdk版本 ≥ 1.0.0,旧版本不支持附件上传能力,可通过以下命令升级:
pip install --upgrade sentry-sdk
2. 全局范围添加附件(所有上报事件都携带log文件)
import sentry_sdk from sentry_sdk import configure_scope # 先初始化Sentry sentry_sdk.init( dsn="你的Sentry项目DSN", # 其他初始化配置 ) # 全局添加附件,之后所有上报的错误、消息都会自动携带该log文件 configure_scope(lambda scope: scope.add_attachment(path="sentry.log"))
3. 局部范围添加附件(仅单次/指定范围的事件携带log)
你之前push_scope的用法有误,Python SDK 中push_scope是上下文管理器,正确用法如下:
from sentry_sdk import push_scope, capture_exception, capture_message # 方式1:捕获特定异常时附加log try: # 你的业务代码 1/0 except Exception as e: with push_scope() as scope: scope.add_attachment(path="sentry.log") capture_exception(e) # 方式2:指定范围内的所有上报都携带log with push_scope() as scope: scope.add_attachment(path="sentry.log") capture_message("测试携带附件的消息") # 该范围内的其他异常上报也会自动带附件
4. 清空全局附件
configure_scope(lambda scope: scope.clear_attachments())
常见排查点
- 确认
sentry.log文件路径正确,且运行程序的用户对该文件有读取权限 - 确认Sentry项目的附件上传功能已开启,且文件大小不超过项目限制(默认最大100MB)
- 若需要动态更新log内容,不要在程序启动时一次性添加全局附件,可改为每次上报前在局部scope中添加,避免上传旧版本的log文件
内容的提问来源于stack exchange,提问作者Karen
相关产品推荐
相关产品推荐

