在Qt中使用Sentry在线收集日志
本文为转载,仅用于收藏目的,版权归原作者所有,如有侵权立即删除
原文链接
前言
工欲善其事,必先利其器。
软件工程越来越复杂,一定要依赖现代化的方式,帮助我们快速定位,分析问题。
这里我们从日志相关3大功能,log、minidump和performance展开,讲述如何在Qt中使用Sentry在线收集日志
关于Sentry
Sentry平台,从简单的说是一个在线日志收集平台。从复杂说的可以帮我们处理从bug发生、定位、源码追溯、bug管理、修复、追踪,甚至是关联git和ci等一系列复杂流程。
使用Sentry是为了帮助我们从繁琐、复杂的日志收集工作中解放出来,提升开发效率。同时Sentry几乎支持全平台全语言,也提供http接口方便各类框架接入,保证了扩展性和适用性。
如果希望更深入了解Sentry,可以直接访问Sentry官网: https://sentry.io/welcome/
Sentry是一个开源平台,可以通过docker部署Sentry到本地离线环境,或者到自己的公网服务器。
如果不想自己部署,也可以直接使用在线版的Sentry,但是这个针对不同使用量收费不同,也有一些限制。自己部署则完全免费也无功能限制。初次使用推荐到Sentry官网注册,全程操作不到5分钟即可完成。
Sentry已经提供了C++ SDK,如果想直接使用Sentry提供的C++ SDK,可以参考:https://docs.sentry.io/platforms/native/
Sentry接入
见原文
Sentry局限性
事件延迟
虽然Sentry是在线日志收集系统,但是不代表post完后数据可以立即刷新出来。一般的log可能有几秒到几十秒延迟,minidump和performance可能有几十秒甚至几分钟级别延迟。追求低延迟可以考虑自己部署Sentry。我自己部署到本地的Sentry,延迟就明显比官方在线版本的低。
网络可用性
官方在线版本Sentry的服务器,毕竟是部署在国外,没有代理加速的话打开会很慢,极端情况下还会丢数据(上传失败)。如果要追求高可用性,建议还是自己部署Sentry。
性能
和那些每秒万级别,几十万级别的日志系统不同。Sentry这边处理速度明显要慢很多。我自己部署的Sentry,用的8代i7 CPU,16G内存,SSD硬盘。对事件处理速度峰值也在几百每秒,再高的话就处理不过来了。当然这个问题可以通过加CPU、加内存、加硬盘解决。但是说到底Sentry性能还是受限,对于大并发量的log,建议还是通过文件方式存储在本地。