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

前言

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

相关推荐
莹雨潇潇3 分钟前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr11 分钟前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho1 小时前
【TypeScript】知识点梳理(三)
前端·typescript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
小白学习日记3 小时前
【复习】HTML常用标签<table>
前端·html
丁总学Java3 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
yanlele3 小时前
前瞻 - 盘点 ES2025 已经定稿的语法规范
前端·javascript·代码规范
懒羊羊大王呀3 小时前
CSS——属性值计算
前端·css
DOKE4 小时前
VSCode终端:提升命令行使用体验
前端