微信小程序操作日志记录,如果是用户量不多或者后台人手安排不足情况下,可以考虑使用微信官方的api上报日志。下面说说此方法的具体实现。
先说下展示结果,查看日志的步骤:微信小程序管理后台mp.weixin.qq.com页面的开发目录=>开发管理=>运维中心=>实时日志。
代码实现:
// 看项目指什么为唯一值界限,例如用户userId或者用户手机号等等,我这边是以用户手机号区分,居于uniapp所以使用了vuex获取用户信息,原生开发的可以使用getApp().globalData.XX || wx.getStorageSync("XX") import $store from "@/store/index.js"; // 获取小程序当前环境,用于关键字过滤操作 import { env } from "./base.js" class LogManager { constructor() { this._log = null; // 日志管理器实际功能变量 this.infoStorage = []; // info级别日志管理 this.warnStorage = []; // warn级别日志管理 this.errorStorage = []; // error级别日志管理 } // 初始化 init() { // #ifdef MP-WEIXIN this._log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null; // #endif } // 实际上报操作 saveLogFunc(args, type) { if (!this._log || !this._log[type]) return; let _mobile = $store.getters["baseInfo/userInfo"].mobile; // 先试用`${type}Storage`临时缓存,如果用户正常登录,获取到手机号码的话,上报日志,否则等待下一次触发 this[`${type}Storage`].push(args); if(!!_mobile) { this.setFilterMsg(`${env}${_mobile}`) try{ this._log[type].apply(this._log, this[`${type}Storage`]) } catch( err) { return } this[`${type}Storage`] = []; } } // 操作过滤关键字 handleFilterMsg(fn, type) { if (!this._log || !this._log[type]) return if (typeof msg !== \'string\') return try{ fn() } catch( err) { return } } // 写 info 日志 info() { this.saveLogFunc(arguments, "info") }; // 写 warn 日志 warn() { this.saveLogFunc(arguments, "warn") } // 写 error 日志 error() { this.saveLogFunc(arguments, "error") } // 设置过滤关键字,从基础库2.7.3开始支持 setFilterMsg(msg) { this.handleFilterMsg(function() { this._log.setFilterMsg(msg) }.apply(this), "setFilterMsg") } // 多个过滤关键字,从基础库2.8.1开始支持 addFilterMsg(msg) { this.handleFilterMsg(function() { this._log.addFilterMsg(msg) }.apply(this), "addFilterMsg") } } export default LogManager;
一般用户反馈,我们可以获取用户手机号,或者使用微信小程序的客服功能的获取到用户id等等,这些就是我们查找用户日志的有效数据。再加上时间段的过滤,例如我查看开发环境13242808961手机号码用户的日志
在小程序App 实例app.vue/app.js引入,上报你的操作数据吧
请发表评论