错误监控
实例在初始化之后会自动进行以下监控
JS执行错误
Promise执行错误
页面不存在错误
异步组件加载失败错误
网络请求错误(request,uploadFile,downloadFile)
云函数错误(callFunction,callContainer)
websocket错误
开启 plugin.apispeed:true 参数后,会自动监听以下异常
- retcode异常
注意!是实例会进行监控,当您只是引入了 SDK 而没有将其实例化时,SDK将什么都不会做。
JS执行错误
SDK通过监听 wx
对象上的 onError
事件来获取项目中的报错,并且通过解析错误和分析堆栈,将错误信息自动上报到后台服务中。该上报的上报等级为 error ,所以,当自动上报的错误达到阈值时,将会自动告警,帮助您尽早发现异常。由于上报等级为 error ,自动上报也将影响项目的评分。
注意:如果用户使用的是 vue 框架,请务必自己获取错误并且主动上报
Promise执行错误
通过监听 onUnhandledRejection
事件,捕获到未被 catch 的Promise错误,为了页面的健壮,建议您 catch 住所有的Promise错误。
Ajax请求异常
SDK 将会改写 wx.request
(qq.request
) 对象,监听每次接口请求,当 statusCode
不存在或者大于等于 400 时认为该请求是一个失败的请求,亦或是接口超时,abort 和其他类型的失败。
注意: SDK 在错误发生的时候,不会主动收集接口请求参数和返回信息,如果需要对进口信息进行上报,可以使用 api 参数里面的 apiDetail 进行开启。
new Aegis({
id: '',
api: {
apiDetail: true,
},
});
retcode异常
同上,SDK 在改写 wx.request
(qq.request
) 对象之后,将获得API返回的内容,并尝试在内容中获取到本次请求的 retcode
。
retcode 的值会从用户返回 response body 的第一层(如果第一层取不到,再取第二层)的 code、ret、retcode、errcode 中获取。 Aegis 默认 retcode 的值为0是正常的,非0都是异常的。当
retcode
发生异常的时候,会上报一个 retcode异常的日志。 用户可以通过 api.retCodeHandler 对这个值和是否异常进行修正。
websocket异常
SDK 默认不会对全局websocket对象进行重写,默认不会监控websocket相关错误,如果需要打开相关功能可以在创建Aegis对象时设置websocketHack: true。
new Aegis({
id: '',
websocketHack: true
});