微信小程式「實時日誌」幫你快速找到bug
- 2019 年 10 月 4 日
- 筆記
為幫助小程式開發者快捷地排查小程式漏洞、定位問題,微信官方推出了實時日誌功能。從基礎庫2.7.1開始,開發者可通過提供的介面列印日誌,日誌匯聚並實時上報到小程式後台。開發者可從小程式管理後台「開發->運維中心->實時日誌」進入日誌查詢頁面,查看開發者列印的日誌資訊。
如何使用:
1、調用相關介面。打日誌的介面是wx.getRealtimeLogManager
,為了兼容舊的版本,建議使用如下程式碼封裝一下,例如封裝在log.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、在頁面的具體位置列印日誌:
var log = require('./log.js') // 引用上面的log.js文件 log.info('hello test hahaha') // 日誌會和當前打開的頁面關聯,建議在頁面的onHide、onShow等生命周期裡面打 log.warn('warn') log.error('error') log.setFilterMsg('filterkeyword') log.setFilterMsg('addfilterkeyword')
完整的例子可以參考程式碼片段:https://developers.weixin.qq.com/s/aFYw1BmC7eak
如何查看日誌:
登陸小程式管理後台,從「開發->運維中心->實時日誌」進入日誌查詢頁面。開發者可通過設置時間、微訊號/OpenID、頁面鏈接、FilterMsg內容(基礎庫2.7.3及以上支援setFilterMsg)等篩選條件查詢指定用戶的日誌資訊。

注意事項:
由於後台資源限制,「實時日誌」使用規則如下:
- 為了定位問題方便,日誌是按頁面劃分的,某一個頁面,在onShow到onHide(切換到其它頁面、右上角圓點退到後台)之間打的日誌,會聚合成一條日誌上報,並且在小程式管理後台上可以根據頁面路徑搜索出該條日誌。
- 每個小程式帳號每天限制100萬條日誌,日誌會保留三天,建議遇到問題及時定位。
- 一條日誌的上限是5KB,最多包含200次列印日誌函數調用(info、warn、error調用都算),所以要謹慎打日誌,避免在循環裡面調用打日誌介面,避免直接重寫console.log的方式打日誌。
- 意見回饋裡面的日誌,可根據OpenID搜索日誌。
- setFilterMsg可以設置過濾的Msg。這個介面的目的是提供某個場景的過濾能力,例如
setFilterMsg('scene1')
,則在MP上可輸入scene1查詢得到該條日誌。比如上線過程中,某個監控有問題,可以根據FilterMsg過濾這個場景下的具體的用戶日誌。FilterMsg僅支援大小寫字母。如果需要添加多個關鍵字,建議使用addFilterMsg替代setFilterMsg。