Table of Contents

WeChatミニプログラムでのログ分析

本稿では、WeChatミニプログラムAR環境におけるログ取得と分析の完全なプロセスを説明します。

WeChatミニプログラム vConsoleの使用

WeChatミニプログラムARは実機でのみ実行およびデバッグ可能なため、vConsoleを使用したリアルタイム出力の観察がデバッグの鍵となります。基本的な使用方法はWeChatミニプログラム公式ドキュメントを参照してください。

実機デバッグでvConsoleを有効化する方法

ARインターフェースで右上の最初のボタンをタップ > 下部ツールバーの開発デバッグをタップ > デバッグを開くをタップ > ポップアップウィンドウで確定をタップしてミニプログラムを再起動します。

デバッグを開く

再起動後に有効化

これ以降、インターフェースにvConsoleフローティングボタンが常時表示されます。

vConsoleボタン

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

ミニプログラムログ

ログソースの識別方法

ログソースは一般的に以下のように分類できます:

  • WeChatミニプログラムシステムログ:通常、ページルーティングの遷移やコンポーネントのライフサイクル変化時にトリガーされ、vConsoleでは青字で表示されます。

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

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

  • ミニプログラムフレームワークエラーログ:WeChat基盤層によってスローされ、内容はMiniProgramErrorで始まります。

  • Megaミニプログラムプラグインログ:Megaミニプログラムプラグイン内部で出力され、ログ内容は角括弧で囲まれたクラス名で始まります(例:[MegaTracker])。現在は主に例外キャッチ時に出力されます。

  • 例 1

    ミニプログラムログ例1

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

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

    3番目は開発者によるカスタム出力です。

  • 例 2

    ミニプログラムログ例2

    [MegaTracker][EasyARSession(xrframe)]などのクラス名で始まるログが出現しており、Megaプラグインが実行例外をキャッチしたことを示しています。

  • 例 3

    ミニプログラムログ例3

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

  • 例 4

    ミニプログラムログ例4

    このログは、megaプラグイン内のonCloudLocalizationメソッドの実行中に例外が発生し、ミニプログラムフレームワークがエラーをスローしたことを示しています。

Megaミニプログラムプラグインのログ形式

< xref:w:easyar.EasyARSession.dumpLog:member(1)>メソッドによってエクスポートされるログは|で区切られ、内容は以下の順序です:

  • タイムスタンプISO 8601標準形式で、ログ出力時のシステム時刻を示します。
  • ログレベルInfoWarningErrorFatalErrorを含みます。
  • クラス名:角括弧で囲まれています。
  • 詳細情報:具体的なログの説明。
  • 呼び出し元:通常はUnspecified(自然な実行プロセスを示す)。ユーザーがインターフェースを呼び出して引き起こされた例外の場合はUserと表示されます。
  • 実行段階Unspecifiedと表示されている場合は無視して構いません。他のフィールドが表示されている場合は、特定の実行段階で例外が発生したことを示します。

ミニプログラムログ

ログの記録と転送方法

ログの取得とエクスポート方法について説明します。

vConsoleからのログエクスポート

ログ出力位置で右側のコピーボタンをクリックしてエクスポートします。

Megaミニプログラムプラグインのdump-logインターフェース

< xref:w:easyar.EasyARSession.dumpLog:member(1)>インターフェースを呼び出してログエクスポートプロセスを制御します:

  • 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使用時にプログラム例外ではなく位置特定やトラッキング関連の問題が発生した場合、ログに加えて必ず当時の画面録画ファイルとsession dumpファイルを提供してください。純粋なログファイルは参考情報に過ぎず、画面録画とdumpデータが問題調査の核心的な根拠となります。

関連トピック