微信小程序打夯之旅(十)- 實(shí)時(shí)日志

概述

謝天謝地,小程序終于出這個(gè)功能了,小程序上線后,如果用戶反饋問題真的很難排查問題,我們能夠收集的資料極其有限,小程序推出實(shí)時(shí)日志真的可以有效幫助定位問題。

環(huán)境說明

  • 基礎(chǔ)庫:2.7.1
  • 日志查詢地址:開發(fā) -> 運(yùn)維中心 -> 實(shí)時(shí)日志,體驗(yàn)版也可以上傳,但是必須在真機(jī)上

如何對接

調(diào)用起來非常方便,獲取小程序日志管理器 wx.getRealtimeLogManager,然后通過 info、warn、error 等方法打印不同類型的日志。

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

也可以通過設(shè)置過濾關(guān)鍵字來幫助日志篩選。

log.setFilterMsg('filterkeyword');
log.addFilterMsg('addfilterkeyword');

封裝到 page 通用能力中

每次都寫一遍比較麻煩,還容易出錯(cuò),所以可以進(jìn)行一些封裝。下面為 app.js

  onLaunch() {
    this.enhancePage();
  },
  
  // 增強(qiáng)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),
    }
  }

在頁面中進(jìn)行使用

Page({
  onLoad() {
    this.$logger.info('just test');
  }
})

注意事項(xiàng)

  • 為了定位問題方便,日志是按頁面劃分的,某一個(gè)頁面,在onShow到onHide(切換到其它頁面、右上角圓點(diǎn)退到后臺)之間打的日志,會聚合成一條日志上報(bào),并且在小程序管理后臺上可以根據(jù)頁面路徑搜索出該條日志。
  • 每個(gè)小程序賬號每天限制100萬條日志,日志會保留三天,建議遇到問題及時(shí)定位。
  • 一條日志的上限是5KB,最多包含200次打印日志函數(shù)調(diào)用(info、warn、error調(diào)用都算),所以要謹(jǐn)慎打日志,避免在循環(huán)里面調(diào)用打日志接口,避免直接重寫console.log的方式打日志。
  • 意見反饋里面的日志,可根據(jù)OpenID搜索日志。
  • setFilterMsg可以設(shè)置過濾的Msg。這個(gè)接口的目的是提供某個(gè)場景的過濾能力,例如setFilterMsg('scene1'),則在MP上可輸入scene1查詢得到該條日志。比如上線過程中,某個(gè)監(jiān)控有問題,可以根據(jù)FilterMsg過濾這個(gè)場景下的具體的用戶日志。FilterMsg僅支持大小寫字母。如果需要添加多個(gè)關(guān)鍵字,建議使用addFilterMsg替代setFilterMsg。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容