小程序异常监控及错误处理

小程序异常监控收集

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

时间: 2024-10-11 11:09:52

小程序异常监控及错误处理的相关文章

一种轻量级的微信小程序日志监控的方法

今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪,今天给大家介绍一个轻量级的错误日志监控服务Fundebug. Fundebug的小程序监控插件接入简单,只需要下载相应的插件文件,然后在app.js文件中引入并配置apikey即可.唯一要注意的就是微信需要设置request合法域名这一点不能忘记了. 1. 创建微信小程序监控项目 需要注册账号,点击

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

摘要: 支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG. Fundebug是专业微信小游戏 BUG 监控服务,可以第一时间捕获线上环境中小游戏的异常.错误或者 BUG,及时给开发者推送报警,帮助您快速修复 BUG. Fundebug的微信小游戏BUG监控插件更新至0.5.0,新增httpTimeout配置选项,支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG,请大家及时更新! 监控 HTTP 慢请求 Fundebug 专注于 BUG

微信小程序官方文档错误整理

大致看了一遍微信小程序文档,发现有几处微小的错误,但瑕不掩瑜.记录下,以后发现了还会继续在此添加.如果有记录不对的,请及时指出错误. 1.视图层->WXSS->尺寸单位 明显错误,应该为 1px=2.34rpx 2.视图层->WXML->引用->include描述 有错别字 3.视图层->WXML->事件->事件绑定 "点击 inner view 会先后触发handleTap1和handleTap2",个人感觉应该是先后触发handleT

初学微信小程序开发—文件解析错误的解决办法

今天是我学习小程序第二天,当我正在调试新增页面时,发现这个错误: 提示为:文件解析错误  SyntaxError: Unexpected end of JSON input 一开始以为我用错标点符号之类的错误,后来百度发现,是因为这里面空的 解决办法非常简单,看图中步骤:找到即将跳转的路径,然后在左侧找到对应的文件(以本案例为例,找到weekly.json) 补上一个大括号就行了,也就是即将跳转的.json文件不能为空 第一次写博客,很新奇 原文地址:https://www.cnblogs.co

微信小程序异常解析

文件解析错误 SyntaxError: Unexpected end of JSON input: 在子目录下添加空白的json配置文件是会出现报错,其原因是因为文件内容空白 pages/index/index/出现脚本错误或未正确调用Page(): 原因是没有在相应页面的.js文件中调用Page(),新建的文件你也需要在.js文件中加上Page({}); 原文地址:https://www.cnblogs.com/smfx1314/p/8835366.html

微信小程序,工具未检测合法域名,400 (Bad Request)错误

1.工具未检测合法域名 这个我就不多说了,如果你新建的时候没有填写AppID的话这个我就不太清楚了 如果新建项目的时候填写了AppID的话,出现这种错误,那你应该去小程序后台 设置->开发者设置->服务器域名 配置你的服务器,这里需要注意,一个月只能修改五次,所以慎重! 这里是小程序开发手册里的配置流程 2.小程序400 (Bad Request)错误 今天写小程序的时候,请求了一个接口,出现问题如下: 查阅了一下资料,发现如下问题 原始代码: wx.request({ url:API_URL

微信+WeTest:小程序云端测试系统上线

日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测试平台,由WeTest提供基础支持,下载"微信开发者工具"即可使用. 小程序测试报告示例:  一. 云真机测试 Beta 为了方便广大开发者检测小程序程序缺陷.评估小程序产品质量,微信提供了免费的云真机测试环境以及一整套测试方案.在小程序交付到真实用户手中使用之前,你可以将小程序分发到云真

微信小程序开发BUG经验总结

摘要: 常见的微信小程序BUG! 小程序开发越来越热,开发中遇到各种各样的bug,在此总结了一些比较容易掉进去的坑分享给大家. 1. new Date跨平台兼容性问题 在Andriod使用new Date("2018-05-30 00:00:00")木有问题,但是在ios下面识别不出来. 因为IOS下面不能识别这种格式,需要用2018/05/30 00:00:00格式.可以使用正则表达式对做字符串替换,将短横替换为斜杠.var iosDate= date.replace(/-/g, '

从前端程序员的视角看小程序的稳定性保障

当我们谈业务稳定性的时候,通常是指后端工程师从架构的角度来看的,例如限流和降级.流量调度.业务开关.容量压测等,但监控也是整个业务稳定性建设中不可或缺的一环,例如对业务和前端的监控,以保证出现问题的时候,可以第一时间找到根因所在.今天,我们就结合小程序的场景,来看看如何做好小程序的监控. 小程序与 H5 的不同 小程序和 H5 都属于移动端场景下的技术选择方案,那么这里介绍一下小程序与 H5 的不同. 1.运行环境的不同 传统的 H5 的运行环境是浏览器,包括 webview,其中浏览器提供 w