Table of Contents

微信小程序上的日誌分析

本文介紹了在微信小程序 AR 環境下進行日誌獲取和分析的完整流程。

Using 微信小程序 vconsole

由於微信小程序 AR 只能在實機運行和調試,使用 vConsole 觀察實時輸出是調試的關鍵,基礎用法可參考微信小程序官方文檔

實機調試中如何啟用 vconsole

在 AR 界面點擊右上角第一個按鈕 > 點擊下方工具欄中的開發調試 > 點擊打開調試 > 在彈出窗口中點擊 確定以重啟小程序。

打開調試

重新打開後生效

此後界面上會持續顯示 vConsole 懸浮按鈕。

vConsole按鈕

點擊 vConsole 按鈕即可查看當前運行的所有日誌:

小程序日誌

如何區分日誌來源

日誌來源一般可以分為:

  • 微信小程序系統日誌:通常在頁面路由跳轉、組件生命週期變化時觸發,在 vConsole 中以藍字顯示。

  • xr-frame 日誌:由官方渲染框架打印,日誌內容以 [xr-frame] 開頭。

  • 用戶自定義日誌:由開發者通過 console.log() 等標準接口打印。

  • 小程序框架錯誤日誌:由微信底層拋出,內容以 MiniProgramError 開頭。

  • Mega 小程序插件日誌:由 Mega 小程序插件內部打印,日誌內容以中括號包裹的類名開頭(如 [MegaTracker]),目前主要在捕獲異常時輸出。

  • 示例 1

    小程序日誌舉例1

    第一部分藍字是系統日誌,顯示了頁面路由及加載狀態

    第二部分以 [xr-frame] 開頭,展示了渲染框架的生命週期信息。

    第三部分是開發者自定義輸出。

  • 示例 2

    小程序日誌舉例2

    出現了 [MegaTracker][EasyARSession(xrframe)] 等類名開頭的日誌,這代表 Mega 插件捕獲到了運行異常。

  • 示例 3

    小程序日誌舉例3

    MiniProgramError 中出現了 WAXRFrameRenderContext.js 字樣,說明使用 xr-frame 相關的接口或組件配置出現了問題。

  • 示例 4

    小程序日誌舉例4

    該日誌說明 mega 插件中的 onCloudLocalization 方法運行時出現了異常導致小程序框架拋出錯誤。

Mega 小程序插件的日誌格式

dumpLog(signal) 方法導出的日誌以 | 分隔,內容依次是:

  • 時間戳ISO 8601 標準格式,表示打印日誌時的系統時間。
  • 日誌級別:包括 InfoWarningErrorFatalError
  • 類名:以中括號包裹。
  • 詳細信息:具體的日誌描述。
  • 調用者:通常為 Unspecified(表示自然運行過程);若為用戶調用接口引發的異常則顯示為 User
  • 運行階段:顯示為 Unspecified 表示無需關注;顯示其他字段則表示該異常發生在特定運行階段。

小程序日誌

如何記錄和轉發日誌

介紹日誌的獲取和導出方案。

vConsole 導出日誌

在打印日誌的位置點擊右側複製按鈕導出。

Mega 小程序插件 dump log 接口

通過調用 dumpLog(signal) 接口控制導出日誌流程:

  • 傳入 true:啟動記錄。
  • 傳入 false:停止記錄,並返回生成的 文件臨時路徑 (tempFilePath)

通常建議將記錄邏輯與 UI 按鈕綁定,在開始記錄時通過 wx.showToast() 方法提示記錄開始,在記錄結束時通過 wx.shareFileMessage() 方法將記錄的文件通過微信聊天轉發。

/**
 * 處理 Session 記錄邏輯
 * @param signal true 為開始記錄,false 為結束記錄並轉發
 */
dumpLog(signal: boolean): void {
  // 調用接口獲取路徑
  const logPath = session.dumpLog(signal);
  // signal 為 true 時,接口返回空字符串,表示正在記錄
  if (logPath.length == 0) {
      wx.showToast({
          title: '開始記錄日誌',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // signal 為 false 時,處理返回的文件路徑
  wx.shareFileMessage({
      filePath: logPath,
      success() {
          wx.showToast({
              title: '日誌轉發成功',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '日誌轉發失敗',
              icon: 'error',
              duration: 2000
          });
      }
  })
}

這個例子演示了如何在 xr-frame 組件中使用 session.dumpLog() 方法記錄並轉發日誌文件,並且給出相應的 Toast 提示。


重要事項

如果使用 Mega 時遇到定位或跟踪相關的問題而不是程序異常,除了日誌外,請務必提供當時的錄屏文件和 session dump 文件。純日誌文件僅能提供側面參考,錄屏與 dump 數據才是排查問題的核心依據

相關主題