Table of Contents

WeChat Mini Program でのログ分析

このドキュメントでは、WeChat Mini Program の AR 環境でログを取得して分析する完全な流れを紹介します。

WeChat Mini Program の vConsole を使用する

WeChat Mini Program の AR は実機でのみ実行およびデバッグできるため、vConsole でリアルタイム出力を確認することがデバッグの鍵です。基本的な使い方は WeChat Mini Program 公式ドキュメント を参照してください。

実機デバッグ中に vConsole を有効にする方法

AR 画面で右上の最初のボタンをクリック > 下部ツールバーの開発デバッグをクリック > デバッグを開くをクリック > ポップアップウィンドウで OK をクリックし、Mini Program を再起動します。

デバッグを開く

再度開いた後に有効

その後、画面上に vConsole のフローティングボタンが継続して表示されます。

vConsole ボタン

vConsole ボタンをクリックすると、現在実行中のすべてのログを確認できます。

Mini Program ログ

ログの出所を区別する方法

ログの出所は一般に次のように分けられます。

  • WeChat Mini Program システムログ: 通常、ページルート遷移やコンポーネント lifecycle の変化時に発生し、vConsole では青文字で表示されます。

  • xr-frame ログ: 公式レンダリングフレームワークが出力し、ログ内容は [xr-frame] で始まります。

  • ユーザー定義ログ: 開発者が console.log() などの標準インターフェイスを通じて出力します。

  • Mini Program フレームワークエラーログ: WeChat の下位層が投げるもので、内容は MiniProgramError で始まります。

  • Mega Mini Program プラグインログ: Mega Mini Program プラグイン内部が出力し、ログ内容は [MegaTracker] のように角括弧で囲まれたクラス名で始まります。現在は主に exception 捕捉時に出力されます。

  • 例 1:

    Mini Program ログ例 1

    最初の青文字部分はシステムログで、ページルートとロード状態を表示しています。

    2 番目の部分は [xr-frame] で始まり、レンダリングフレームワークの lifecycle 情報を示しています。

    3 番目の部分は開発者のカスタム出力です。

  • 例 2:

    Mini Program ログ例 2

    [MegaTracker][EasyARSession(xrframe)] などのクラス名で始まるログが現れています。これは Mega プラグインが実行時 exception を捕捉したことを表します。

  • 例 3:

    Mini Program ログ例 3

    MiniProgramError の中に WAXRFrameRenderContext.js という文字列が現れており、xr-frame 関連のインターフェイスまたはコンポーネント設定に問題があることを示しています。

  • 例 4:

    Mini Program ログ例 4

    このログは、mega プラグイン内の onCloudLocalization メソッド実行時に exception が発生し、Mini Program フレームワークがエラーを投げたことを示しています。

Mega Mini Program プラグインのログ形式

dumpLog(signal) メソッドからエクスポートされるログは | で区切られ、内容は順に次のとおりです。

  • タイムスタンプ: ISO 8601 標準形式で、ログ出力時のシステム時刻を表します。
  • ログレベル: InfoWarningErrorFatalError を含みます。
  • クラス名: 角括弧で囲まれます。
  • 詳細情報: 具体的なログ説明です。
  • Caller: 通常は Unspecified で、自然な実行過程を表します。ユーザーがインターフェイスを呼び出したことで発生した exception の場合は User と表示されます。
  • 実行段階: Unspecified と表示される場合は注目不要です。他のフィールドが表示される場合、その exception が特定の実行段階で発生したことを示します。

Mini Program ログ

ログを記録して転送する方法

ログの取得とエクスポート方法を紹介します。

vConsole ログのエクスポート

ログが出力されている位置の右側にあるコピー按钮をクリックしてエクスポートします。

Mega Mini Program プラグイン dump log インターフェイス

dumpLog(signal) インターフェイスを呼び出してログエクスポートの流れを制御します。

  • true を渡す: 記録を開始します。
  • false を渡す: 記録を停止し、生成された 一時ファイルパス (tempFilePath) を返します。

通常、記録ロジックを UI ボタンに紐付けることを推奨します。記録開始時は wx.showToast() メソッドで記録開始を提示し、記録終了時は wx.shareFileMessage() メソッドで記録したファイルを WeChat チャット経由で転送します。

/**
 * 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 使用時にプログラム exception ではなく localization または tracking 関連の問題が発生した場合、ログに加えて、その時点の画面録画ファイルと session dump ファイルを必ず提供してください。純粋なログファイルは側面的な参考にしかならず、画面録画と dump データこそが問題調査の核心的な根拠です。

関連トピック