git https://github.com/getsentry/sentry
- 集成gitlab 一键创建issue
- 配置邮件通知
- 配置规则,添加邮件发送条件
- 配置版本号,为开发和线上配置不同的邮件发送规则
- sourcemap,直接查看报错js代码片段
//最简单的方式是主动触发:
try {
doSomething(a[0])
} catch(e) {
Raven.captureException(e)
}
//window.onerror捕捉异常
window.onerror = function (e) {
Raven.captureException(e)
}
//在vue里可以使用Vue.config.errorHandler 钩子来捕捉
Vue.config.errorHandler = (err, vm, info) => {
Raven.captureException(err)
}
//对于接口报错,可以在全局拦截里实现
request.interceptors.response.use(null, error => {
axiosHelper.error(error)
Raven.captureException(error)
return Promise.reject(error)
})
使用过程中可能遇到的问题
1.采集到的信息不全,没有我们想要的用户信息,如用户guid和phone
解决方案:文档里有提供方法setUserContext(),顾名思义该方法是设置全局上下文,因此我们可以在拿到用户信息后执行一次该方法。
request.interceptors.response.use(null, error => {
axiosHelper.error(error)
Raven.setUserContext({
phone: token.Phone || '',
guid: token.CustomerGuid || ''
})
Raven.captureException(error)
return Promise.reject(error)
})
2.当异常信息过多时,在监控后台没有有效的筛选条件,导致我要看指定的异常信息什么困难
解决方案:查询文档发现有新增标签的方法,标签可以帮助我们来筛选异常信息。
Raven.setTagsContext({
phone: token.Phone || '未登录'
})
3.由于线上的代码都是压缩过的,所以报错时很难定位到具体的哪一行代码出错。
解决方案: 上传sourcemap,sentry会自动匹配源码 https://docs.sentry.io/
搭建自己的sentry服务
由于官方提供的免费服务有一定次数的限制,达到一定限制后想要再使用就需要收费了,但是sentry是开源项目所以我们可以在本地搭建自己的服务,官方页提供了具体的操作步骤。Sentry的搭建
- 通过Docker容器安装 官方教程链接