小程序异常监控收集

web端与小程序错误监控差异

  • 在 Web 端监测的是页面完整的 url,而小程序端监测的是路由地址;
  • 小程序页面属于app内部的页面,使用时已全部加载完毕,因此监控页面性能时不统计页面加载时长等信息,更多的是对页面内请求、资源请求和用户行为的监控;
  • 由于微信官方和小程序代码的要求,集成方式对比 Web 端会相对严格一些。

小程序需要监控的数据

  • JavaScript异常监控:不论是 Web 端还是小程序端,对 JavaScript 异常的监控都是必要的;
  • 页面内请求监控:对于小程序来说,需要统计发送网络请求的 swan.request() 异常时的请求状态、请求时长、请求地址等;
  • 资源加载监控:当需要下载资源到本地的 swan.downloadFile() 出现异常时,统计加载时间、异常类型、资源地址等;
  • 页面性能监控:访问监控、页面来源及流向监控等,方便更好的对小程序进行运营;
  • 用户数据统计:用户的分布、操作系统及版本、app版本、IP 地址等,给错误的分析提供更多条件。

简单收集

  • 小程序App()生命周期里提供了onError函数,可以通过在onError里收集异常信息,具体原理可查看JS实现监控微信小程序的原理

      App({// 监听错误onError: function (err) {// 上报错误swan.request({url: "https://url", // 自行定义报告服务器method: "POST",errMsg: err})}})  

用户操作路径收集

一些较隐蔽的错误如果只有错误栈信息,排查起来会比较难,如果有用户操作的路径,在排查时就方便多了。

  • 暴力打点方法收集
    优点:简单直接
    缺点:污染业务代码,造成较多垃圾代码
  • 函数劫持
    需要在App函数中的onLaunch、onShow、onHide生命周期插入监控代码,通过重写App生命周期函数来实现。

      App = function(app) {["onLaunch", "onShow", "onHide"].forEach(methodName => {app[methodName] = function(options) {// 构造访问日志对象var breadcrumb = {type: "function",time: utils.now(),belong: "App", // 来源method: methodName,path: options && options.path, // 页面路径query: options && options.query, // 页面参数scene: options && options.scene // 场景编号};self.pushToBreadcrumb(breadcrumb); // 把执行对象加入到面包屑中})}

但是这样写,会把用户自定义的内容给覆盖掉,所以还需要把用户定义的函数和监控代码合并。

    var originApp = App // 保存原对象App = function(app) {// .... 此处省略监控代码// .... 此处省略监控代码originApp(app) // 执行用户定义的方法}  

小程序性能监控插件

  • Fundebug 提供网站、微信小程序和小游戏的bug监控服务,例如:API的一些函数调用情况、监控函数调用的参数、收集HTTP请求错误的body、监控某些特定的自定义函数等。
  • FrontJS 的小程序错误监控相比于微信小程序后台的数据监控,增加了对于错误的统计和产生错误的相关用户分析,FrontJS可以收集精细到 console.log 级别的任何 JavaScript 异常信息并提供 stack trace 信息;对于任何一条错误信息或访问,它都会统计到该用户IP、屏幕分辨率、DPR、操作系统类型和微信版本,方便更有针对性的去调试出现的错误。
  • 百度数据统计分析展示平台 提供对web页面的性能、访问点击、js异常、浏览器新特性、跨站资源、XSS漏洞、自定义事件、Native性能检测服务,对 百度小程序 的支持还需进一步调研。

白屏监控

用户在访问网页的时候,在浏览器开始显示之前都会有一个的白屏过程,在移动端,受限于设备性能和网络速度,白屏会更加明显。

白屏时间

页面完全空白的时间,web可以在页面的head底部添加的JS代码用来做白屏时间的标记。

微信 web 资源离线存储

通过使用微信离线存储,Web 开发者可借助微信提供的资源存储能力,直接从微信本地加载 Web 资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验。每个公众号下所有 Web App 累计最多可缓存 5M 的资源。这个设计有点类似 HTML5 的 Application Cache。

参考资料
小程序基础库的更新迭代——8.2 异常
小程序异常监控收集
微信小程序错误监控经验谈
JS实现监控微信小程序的原理
微信小程序函数调用监控
微信 Web 资源离线存储

转载于:https://www.cnblogs.com/yfife/p/9305258.html

小程序异常监控及错误处理相关推荐

  1. 腾讯WeTest小程序异常监控:解决异常问题,为高质量用户体验护航

    随着互联网数字化发展,小程序已经成为诸多企业经营矩阵中不可或缺的一环.阿拉丁研究院及小程序数据库相关数据显示,2022年H1微信.支付宝.抖音.快手等多个平台小程序数量超过750万,日活用户超过7.8 ...

  2. 微信小程序函数调用监控

    微信小程序之无埋点函数调用监控 有时候,面对一个bug,左思右想就是无法理解为什么. 我就有过这样的经历,耗时整个一个晚上,后来还是放弃了.不得不在所有可能的点都加上日志,部署等待再次报错,真的很让人 ...

  3. 同程艺龙小程序性能监控系统的探索与实践

    导语 |近日,云+社区开发者大会(苏州站)圆满落幕.本次开发者邀请了腾讯内部及业内行业大咖就物联网.小程序.微服务等当前互联网领域的热点技术的落地实践问题进行了深度探讨.本文是同程艺龙资深架构师牛提罚 ...

  4. 小程序性能监控_通过应用程序性能管理升级监控

    小程序性能监控 APM入门 应用程序性能管理(APM)是对软件应用程序的可用性和性能的监视和管理. 不同的人对这个定义的理解不同,因此本文试图确定APM是什么,包括什么以及为什么对您的业务很重要. 如 ...

  5. 微信支付服务商,![CDATA[sub_mch_id与sub_appid不匹配],微信小程序支付,签名错误,CDATA[签名错误]解决方法,支付签名验证失败

    微信支付服务商,微信小程序支付,签名错误,CDATA[签名错误]解决方法 1:服务商和普通的商户支付在代码上没有太大差异(不同的是上传的参数,而且微信支付服务商参数上比较难找,官方文档又太简洁,所以很 ...

  6. 微信小程序坑点杂谈(五)1000比200小?光速解决小程序数值大小判断错误的问题

    微信小程序坑点杂谈(五)光速解决小程序数值大小判断错误的问题 一.写在开头 本人只是一枚小小的新手开发者,所提的问题和解答很难超过个人水平,如果对你有帮助,那就太好了! 二.发现问题 我个人前些天写一 ...

  7. 微信小程序POST请求400错误

    微信小程序POST请求400错误 错误 解决方案 若需将请求数据以json的格式发送, 添加以下请求头 header: {"Content-Type": "applica ...

  8. 微信小程序异常,this.setDate is not a function报错求解

    微信小程序异常,this.setDate is not a function报错求解 this.setDate({ v4:"v4444" })this.setData 写错了

  9. Fundebug 微信小游戏异常监控插件更新至 0.5.0,支持监控 HTTP 慢请求

    摘要: 支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG. Fundebug是专业微信小游戏 BUG 监控服务,可以第一时间捕获线上环境中小游戏的异常.错误或者 BUG, ...

最新文章

  1. 升级BIOS解决DELL R730XD虚拟机死机问题
  2. Linux内核探讨-- 第三章
  3. 数字IC设计经典书籍
  4. commit之后,想撤销commit
  5. 数据挖掘10大算法详细介绍
  6. 前端工程师技术精进路上,你被卡在哪里了?
  7. Spark OpenHashMap分析
  8. linux php7.0安装debug,ubuntu 安装php7.0 xdebug
  9. 学生信息管理系统(C语言)
  10. 小程序常用的10款框架
  11. 达芬奇--艺工结合先驱
  12. 1000瓶药水,其中1瓶有毒,最少要几只老鼠?
  13. 【数据结构】循环队列的front,rear指针以及队列满的条件、计算队列长度
  14. js获取浏览器默认语言设置并自动跳转
  15. 配置华为AP6050DN胖AP
  16. Python第六周作业
  17. startup_stm32f10x_hd.S:1: Error: junk at end of line, first unrecognized character is `*‘
  18. ENVI:在ENVI中如何查看所打开遥感影像的所有波段
  19. Page Life Expectancy判断服务器运行SQLSERVER时内存是否充足
  20. 汽车早讯丨庞大集团董事长回应高管降薪;一嗨租车达成新私有化协议

热门文章

  1. php编写TCP服务端和客户端程序
  2. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view...
  3. 偷懒日志 - 自动生成代码 - 第二步 生成POJO
  4. 究竟应该怎么调用WCF服务?
  5. BZOJ3670 [Noi2014]动物园 【KMP计数】
  6. 二 RHEL7.2下的Docker配置
  7. 服务端工程师入门与进阶 Java 版
  8. 转载-区分C#中的Abstract函数和Virtual函数
  9. Spring transaction事务之roll back回滚: rollback-for
  10. 算法--------删除重复元素,但保留两个