微信小程序打夯之旅(十)- 实时日志

概述

谢天谢地,小程序终于出这个功能了,小程序上线后,若是用户反馈问题真的很难排查问题,咱们可以收集的资料极其有限,小程序推出实时日志真的能够有效帮助定位问题。javascript

环境说明

  • 基础库:2.7.1
  • 日志查询地址:开发 -> 运维中心 -> 实时日志,体验版也能够上传,可是必须在真机上

如何对接

调用起来很是方便,获取小程序日志管理器 wx.getRealtimeLogManager,而后经过 infowarnerror 等方法打印不一样类型的日志。java

const log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null;
if (!log) return;
log.info('hello, info');
log.warn('hello, warn');
log.error('hello, error');
复制代码

也能够经过设置过滤关键字来帮助日志筛选。小程序

log.setFilterMsg('filterkeyword');
log.addFilterMsg('addfilterkeyword');
复制代码

封装到 page 通用能力中

每次都写一遍比较麻烦,还容易出错,因此能够进行一些封装。下面为 app.jsapp

onLaunch() {
    this.enhancePage();
  },
  
  // 加强Page能力,小程序不支持prototype的形式拓展能力
  enhancePage() {
    const oPage = Page;
    Page = config => oPage(Object.assign(config, {
      $logger: this.getLogger(),
    }));
  },
  
  // 获取日志打印器
  getLogger() {
    const log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null;
    return {
      info: () => log && log.info.apply(log, arguments),
      warn: () => log && log.warn.apply(log, arguments),
      error: () => log && log.error.apply(log, arguments),
      setFilterMsg: msg => log && log.setFilterMsg && log.setFilterMsg(msg),
      addFilterMsg: msg => log && log.addFilterMsg && log.addFilterMsg(msg),
    }
  }
复制代码

在页面中进行使用运维

Page({
  onLoad() {
    this.$logger.info('just test');
  }
})
复制代码

注意事项

  • 为了定位问题方便,日志是按页面划分的,某一个页面,在onShow到onHide(切换到其它页面、右上角圆点退到后台)之间打的日志,会聚合成一条日志上报,而且在小程序管理后台上能够根据页面路径搜索出该条日志。
  • 每一个小程序帐号天天限制100万条日志,日志会保留三天,建议遇到问题及时定位。
  • 一条日志的上限是5KB,最多包含200次打印日志函数调用(info、warn、error调用都算),因此要谨慎打日志,避免在循环里面调用打日志接口,避免直接重写console.log的方式打日志。
  • 意见反馈里面的日志,可根据OpenID搜索日志。
  • setFilterMsg能够设置过滤的Msg。这个接口的目的是提供某个场景的过滤能力,例如setFilterMsg('scene1'),则在MP上可输入scene1查询获得该条日志。好比上线过程当中,某个监控有问题,能够根据FilterMsg过滤这个场景下的具体的用户日志。FilterMsg仅支持大小写字母。若是须要添加多个关键字,建议使用addFilterMsg替代setFilterMsg。
相关文章
相关标签/搜索