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

概述

謝天謝地,小程序終於出這個功能了,小程序上線後,若是用戶反饋問題真的很難排查問題,咱們可以收集的資料極其有限,小程序推出實時日誌真的能夠有效幫助定位問題。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。
相關文章
相關標籤/搜索