1.1.7 • Published 3 years ago
magpie-miniapp v1.1.7
第一步
小程序运营平台设置 request合法域名 https://t.kanzhun.com
magpie.js
#import {magpieMiniApp} from "magpie-miniapp"; //npm方案
import {magpieMiniApp,filterTools} from "./index"; // 本地方案
magpieMiniApp.config.appKey = '86bc09254a2fbabdfba41' // key为自定义唯一值,用于后端记录时区分应用
magpieMiniApp.config.url = 'https://t.kanzhun.com/z.gif'; // 上报服务端地址
// 可选参数
magpieMiniApp.config.setSystemInfo = false; // 获取系统信息
magpieMiniApp.config.setLocation = false; // 获取用户位置信息
magpieMiniApp.config.thresholds = 4000; // 设置性能阀值
magpieMiniApp.config.v = "2.3.5"; // 设置项目版本号
magpieMiniApp.config.miniType=wx //设置小程序平台类型 微信wx QQ:qq
//自定义上报
wx.monitorSends = function (ops) {
magpieMiniApp.sendMsg(ops)
}
wx.filterTools = function (ops) {
filterTools(ops)
}
wx.magpieMiniApp = magpieMiniApp
export {magpieMiniApp,filterTools}
使用场景说明
接入小程序监控,可以npm install magpieMiniApp 也可以本地引入SDK文件
接入方式
在入口文件app.js内引入
import magpieMiniApp from "./magpie.js"
App({
onError: function (err) {
//接入监控
magpieMiniApp.error('error')
},
onLaunch: function (ops) {
....
onShow: function () {
....
},
onHide: function () {
....
},
globalData: {
....
}
});
完整代码
//性能监控开始时间
import {filterTools} from "magpie-miniapp";
const jsErrorArray = [
/(\w+\.){2}\w+/,
/\/job\/+\w+/g,
/request\:fail/,
"该账号已被冻结",
"审核中",
"职位已下线",
"下载店长直聘软件,立即和店长沟通",
"名字长度为2-5个字",
"请先去完善自我介绍后再投递",
"您的账号已注销",
"今日投递次数已用完",
"至少保留一张照片",
"请选择您想找的职位类型",
"非好友,不能查看好友信息",
"没有查到boss信息,请重新选择",
"/ticket/check.json",
"/job/phone.json",
"/job/deliverWap.json",
"/user/update.json",
"/geek/update.json",
"/mini/friendRelation/isFriend.json"
]
let currentTime=new Date().getTime()
wx.request({
url: requestUrl,
method: opts.method,
header: header,
data: opts.data,
success(res) {
//性能监控上报
currentTime=new Date().getTime()-currentTime
if(wx.magpieMiniApp.config.thresholds<currentTime){
wx.monitorSends({
errorCode: `{appKey:${wx.magpieMiniApp.config.appKey},api:${opts.url},msg:"超过5S"`,
sceneType:"-1",
apiUrl:opts.url||"",
runTime:currentTime,
apiParam:opts.data||{},
errorType:"performance",
})
}
//接口监控
if (res.data.rescode != 0 && !filterData(jsErrorArray, res.data.resmsg)) {
if (!filterData(jsErrorArray, opts.url)) {
wx.monitorSends({
errorCode: res.data,
errorType:"codeError",
apiUrl:requestUrl||"",
apiParam:opts.data||{}
})
}
}
},
fail: function (e) {
if(!filterData(jsErrorArray,e.resmsg)){
wx.monitorSends({
errorCode: e,
apiUrl:requestUrl||"",
apiParam:opts.data||{},
errorType:"httpCatchError"
})
}
reject(e);
checkNetworkStatus()
}
})
性能监控
let currentTime=new Date().getTime()
wx.request({
url: requestUrl,
method: opts.method,
header: header,
data: opts.data,
success(res) {
//性能监控上报
currentTime=new Date().getTime()-currentTime
if(wx.magpieMiniApp.config.thresholds<currentTime){
wx.monitorSends({
errorCode: `{appKey:${wx.magpieMiniApp.config.appKey},api:${requestUrl}`,
sceneType:"-1",
apiUrl:requestUrl||"",
runTime:currentTime,
apiParam:opts.data||{},
errorType:"performance",
})
}
}
})
接口数据异常上报
根据情况自行设置过滤条件
if (res.data.rescode != 0 && filterData(FilterTextArray, res.data.resmsg)) {
if (filterData(FilterApiArray, opts.url)) {
wx.monitorSends({
errorCode: res.data,
errorType:"codeError",
apiUrl:requestUrl||"",
apiParam:opts.data||{}
})
}
}
工具:上报过滤器
根据业务场景,有些错误没必要上报,可以通过过滤器 filterTools(arr,target) 使用方式
import {filterTools} from "magpie-miniapp"; //npm方案
filterTools(jsErrorArray,"变量")
或者
wx.filterTools(jsErrorArray,"变量")
常规用法
例子
resMsg文案过滤
const FilterTextArray = [
"该账号已被冻结",
"审核中",
"职位已下线",
"下载店长直聘软件,立即和店长沟通",
"名字长度为2-5个字",
"请先去完善自我介绍后再投递",
"您的账号已注销",
"今日投递次数已用完",
"至少保留一张照片",
"请选择您想找的职位类型",
]
错误字符串过滤
const FilterCatchArray = [
"request:fail interrupted",
"request:fail 请求超时。",
"request:fail timeout",
"request:fail -105:net::ERR_NAME_NOT_RESOLVED",
"fail - 105: net:: ERR_NAME_NOT_RESOLVED",
]
接口地址过滤
const FilterApiArray = [
"/ticket/check.json",
"/job/phone.json",
"/job/deliverWap.json",
"/user/update.json",
"/geek/update.json",
"/job/detail.json",
]
//过滤指定的resMsg文案 wx.filterData(FilterTextArray,res.resMsg) //过滤指定的接口地址 wx.filterData(FilterApiArray,url) //过滤包含有异常文案 wx.filterData(FilterCatchArray,e.resmsg)
高级用法
混合使用(自定义正则 +字符串过滤)
const jsErrorArray = [
/(\w+\.){2}\w+/,
"/ticket/check.json",
"/job/phone.json",
"/job/deliverWap.json",
"/user/update.json",
"request:fail interrupted",
"request:fail 请求超时。",
"request:fail timeout",
"您的账号已注销",
"今日投递次数已用完",
/\/job\/+\w+/g
]
过滤指定内容(正则形式,字符串形式)
wx.filterTools(jsErrorArray,"变量")
下载本地包
1.1.7
3 years ago