前言
在开发微信小程序上线后会遇到bug或问题,通常的解决方案是将开发环境接口换成线上接口进行调试排除错误。实际的正式环境可能与我们调试设备存在差别无法避免,例如:用户权限管理、网络环境、屏幕尺寸、分辨率、处理器性能、操作系统版本等,这可能会导致应用在不同设备上的表现不同。
为了实时查看线上用户操作,或线上出现bug能及时处理,看到了微信开发文档提到的一个功能实时日志。
实时日志文档地址:developers.weixin.qq.com/miniprogram...
实时日志
1、实时日志位置
根据实时日志的文档,找网上其他博主相关文章都提到在哪个地方看日志(打开小程序后台 >开发管理>运维中心)
吐槽一下:这个地方我找了好久发现根本就没有运维中心这个模块,在后面才发现它移动到了We分析模块下面。
别人的小程序开发管理: 我的小程序开发管理:
在网上找了许久都没有找到这个运维中心去哪里了,直到打开了它: 顺便找下这个网站是干啥的
自21年8月上线以来,We分析在不断优化已有能力的同时,新增上线多项数据服务,旨在更好地满足小程序商家/开发者日益精细、深入的数据分析诉求。
为了平衡技术服务与运营成本,同时更高效地满足不同类型、不同量级小程序商家/开发者的分析诉求。We分析自2023/12/18起,将提供免费使用的"基础版"和按量付费的"专业版",以及相应的资源包、增值服务等。小程序商家/开发者可根据自身业务现状,选择使用We分析-基础版,或按需开通We分析-专业版。
2、开启实时日志功能
(1)访问地址:wedata.weixin.qq.com/。
(2)首次使用小程序管理员登录,注:we分析平台的成员权限和小程序开发人员权限是分离的,所以小程序开发人员是无法登录这个we分析平台。
(3)使用管理员账户登录后可以根据下面流程:开启实时日志有个前提条件就是先开启统计上报服务,才能启动实时日志功能。
实时日志功能启动后点击进入,即可看到以下页面表示实时日志功能开启了,网站:We分析
We分析中也存在更多的功能(大多付费,感觉挺不错的)。地址如下:说明文档
日志上传
实时日志如何调用官方文档:developers.weixin.qq.com/miniprogram... 下面以我自己的vue项目demo封装用户报错接口上传为案例
1、创建一个后端接口配置文件config.js
js
export default {
baseUrl: {
development:'https://192.157.62.14:8080',// 开发环境
production: 'https://top.xxxxxxxxxx.com',// 正式环境
},
}
2、封装日志上传文件logo.js,(我这边是直接复制官方的案例)
js
var log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null
module.exports = {
debug() {
if (!log) return
log.debug.apply(log, arguments)
},
info() {
if (!log) return
log.info.apply(log, arguments)
},
warn() {
if (!log) return
log.warn.apply(log, arguments)
},
error() {
if (!log) return
log.error.apply(log, arguments)
},
setFilterMsg(msg) { // 从基础库2.7.3开始支持
if (!log || !log.setFilterMsg) return
if (typeof msg !== 'string') return
log.setFilterMsg(msg)
},
addFilterMsg(msg) { // 从基础库2.8.1开始支持
if (!log || !log.addFilterMsg) return
if (typeof msg !== 'string') return
log.addFilterMsg(msg)
}
}
2、封装统一的接口拦截,微信小程序不能调axios,所以封装uinapp接口请求,注意讲接口拦截部分,针对报错400和401的消息,上面的上传封装logo函数使用logo.error(JSON.stringify(res)) 、logo.warn(JSON.stringify(res)) 进行调用,使用JSON.stringify(res))方式将json转字符串,因为日志上传需要传string格式 if (typeof msg !== 'string') return。
js
// 引入配置文件
import config from '../config.js';
import logo from './logo.js'
export default {
config: {
baseUrl: config.newbaseUrl[process.env.NODE_ENV],
header: {},
data: {},
method: "GET",
dataType: "json",
},
/**
* 请求拦截器
* @param {*} res
* @returns
*/
interceptorsRes (res){
const { code } = res.data
console.log("请求成功",res);
if(code == 400){
uni.showToast({
icon:"error",
title: res.data.msg,
duration: 2000
});
logo.error(JSON.stringify(res));
}
if(code == 200) {
console.log("请求成功",res);
return res;
}
if(code == 401) {
console.log("未授权,跳转回登录页");
logo.warn(JSON.stringify(res));
return new Error('未登录/授权过期');
}
//....报错信息处理
} ,
//....其他函数
}
日志查询
如下图所示可以根据时间,设备类型,日志等级,页面地址,用户备注消息以及用户微信号openid等进行数据筛选或查询,但需要注意一点,上报日志数据每日额度各为5,000条,所以谨慎打日志,避免在循环里面调用打日志接口,避免直接重写console.log的方式打日志。