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 ボタンをクリックすると、現在実行中のすべてのログを確認できます。

ログの出所を区別する方法
ログの出所は一般に次のように分けられます。
WeChat Mini Program システムログ: 通常、ページルート遷移やコンポーネント lifecycle の変化時に発生し、vConsole では青文字で表示されます。
xr-frame ログ: 公式レンダリングフレームワークが出力し、ログ内容は
[xr-frame]で始まります。ユーザー定義ログ: 開発者が
console.log()などの標準インターフェイスを通じて出力します。Mini Program フレームワークエラーログ: WeChat の下位層が投げるもので、内容は
MiniProgramErrorで始まります。Mega Mini Program プラグインログ: Mega Mini Program プラグイン内部が出力し、ログ内容は [MegaTracker] のように角括弧で囲まれたクラス名で始まります。現在は主に exception 捕捉時に出力されます。
例 1:

最初の青文字部分はシステムログで、ページルートとロード状態を表示しています。
2 番目の部分は
[xr-frame]で始まり、レンダリングフレームワークの lifecycle 情報を示しています。3 番目の部分は開発者のカスタム出力です。
例 2:

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

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

このログは、mega プラグイン内の
onCloudLocalizationメソッド実行時に exception が発生し、Mini Program フレームワークがエラーを投げたことを示しています。
Mega Mini Program プラグインのログ形式
dumpLog(signal) メソッドからエクスポートされるログは | で区切られ、内容は順に次のとおりです。
- タイムスタンプ:
ISO 8601標準形式で、ログ出力時のシステム時刻を表します。 - ログレベル:
Info、Warning、Error、FatalErrorを含みます。 - クラス名: 角括弧で囲まれます。
- 詳細情報: 具体的なログ説明です。
- Caller: 通常は
Unspecifiedで、自然な実行過程を表します。ユーザーがインターフェイスを呼び出したことで発生した exception の場合はUserと表示されます。 - 実行段階:
Unspecifiedと表示される場合は注目不要です。他のフィールドが表示される場合、その exception が特定の実行段階で発生したことを示します。

ログを記録して転送する方法
ログの取得とエクスポート方法を紹介します。
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 データこそが問題調査の核心的な根拠です。