开启微信小程序线上实时日志功能

前言

在开发微信小程序上线后会遇到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的方式打日志。

相关推荐
轻口味33 分钟前
命名空间与模块化概述
开发语言·前端·javascript
前端小小王1 小时前
React Hooks
前端·javascript·react.js
迷途小码农零零发1 小时前
react中使用ResizeObserver来观察元素的size变化
前端·javascript·react.js
娃哈哈哈哈呀2 小时前
vue中的css深度选择器v-deep 配合!important
前端·css·vue.js
旭东怪2 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
ekskef_sef4 小时前
32岁前端干了8年,是继续做前端开发,还是转其它工作
前端
sunshine6414 小时前
【CSS】实现tag选中对钩样式
前端·css·css3
真滴book理喻4 小时前
Vue(四)
前端·javascript·vue.js
蜜獾云5 小时前
npm淘宝镜像
前端·npm·node.js