Azure Spatial Anchors でのログ記録と診断

Azure Spatial Anchors は、アプリの開発に役立つ標準のログ記録メカニズムを提供します。 Spatial Anchors の診断ログ モードは、デバッグに関してより多くの情報が必要な場合に役立ちます。 診断ログは、環境のイメージを保存します。

標準的なログ記録

Spatial Anchors API では、ログ記録メカニズムをサブスクライブすることで、アプリケーション開発とデバッグに役立つログを取得することができます。 標準的なログ記録 API では、デバイス ディスク上に環境の画像は保存されません。 これらのログは SDK でイベントのコールバックとして提供されます。 これらのログをアプリケーションのログ記録メカニズムに統合するかどうかは、お客様が選ぶことができます。

ログ メッセージの構成

ユーザーが関心を持つコールバックが 2 つあります。 次のサンプルは、セッションの構成方法を示しています。

    cloudSpatialAnchorSession = new CloudSpatialAnchorSession();
    . . .
    // set up the log level for the runtime session
    cloudSpatialAnchorSession.LogLevel = SessionLogLevel.Information;

    // configure the callback for the debug log
    cloudSpatialAnchorSession.OnLogDebug += CloudSpatialAnchorSession_OnLogDebug;

    // configure the callback for the error log
    cloudSpatialAnchorSession.Error += CloudSpatialAnchorSession_Error;

イベントとプロパティ

これらのイベント コールバックは、ログとエラーをセッションから処理するために提供されています。

  • LogLevel: ランタイムから受信するイベントの詳細のレベルを指定します。
  • OnLogDebug: 標準的なデバッグ ログ イベントが提供されます。
  • Error: ランタイムでエラーであると見なされたログ イベントが提供されます。

診断ログ

Spatial Anchors にはログ記録操作の標準モードに加え、診断モードも存在します。 診断モードでは、環境のイメージがキャプチャされ、ディスクにログ記録されます。 このモードを使用すると、アンカーの予測検索の失敗など、特定の種類の問題をデバッグすることができます。 診断ログは、特定の問題を再現するためにのみ、有効にしてください。 終了後は、無効にします。 アプリの通常実行時には、診断を有効にしないでください。

Microsoft サポートの利用中に、Microsoft の担当者が詳しい調査のため診断バンドルの提出を依頼することがあります。 この場合、診断を有効にして問題を再現し、診断バンドルを送信することができます。

Microsoft の担当者が事前に認識していない状態で診断ログを Microsoft に提出しても、返答は得られません。

以下のセクションでは、診断モードを有効にする方法と、Microsoft に診断ログを送信する方法についても説明します。

診断ログの有効化

セッションについて診断ログを有効にすると、セッション内のすべての操作に対応する診断ログがローカル ファイル システムに生成されます。 ログ記録の間、環境のイメージがディスクに保存されます。

private void ConfigureSession()
{
    cloudSpatialAnchorSession = new CloudSpatialAnchorSession();
    . . .

    // set up the log level for the runtime session
    cloudSpatialAnchorSession.LogLevel = SessionLogLevel.Information;

    // configure the callbacks for logging and errors
    cloudSpatialAnchorSession.OnLogDebug += CloudSpatialAnchorSession_OnLogDebug;
    cloudSpatialAnchorSession.Error += CloudSpatialAnchorSession_Error;

    // opt in to diagnostics logging of environment images
    // if this is enabled, the diagnostics bundle includes images of the environment captured by the session
    cloudSpatialAnchorSession.Diagnostics.ImagesEnabled = true;

    // set the level of detail to be collected in the diagnostics log by the session
    cloudSpatialAnchorSession.Diagnostics.LogLevel = SessionLogLevel.All;

    // set the max bundle size to capture the bug information
    cloudSpatialAnchorSession.Diagnostics.MaxDiskSizeInMB = 200;
    . . .
}

診断バンドルの提出

次のコード スニペットは、診断バンドルを Microsoft に提出する方法を示しています。 このバンドルには、診断を有効にした後にセッションでキャプチャされた環境のイメージが含まれます。

// method to handle the diagnostics bundle submission
private async Task CreateAndSubmitBundle()
{
    // create the diagnostics bundle manifest to collect the session information
    string path = await cloudSpatialAnchorSession
                              .Diagnostics
                              .CreateManifestAsync("Description of the issue");

    // submit the manifest and data to send feedback to Microsoft
    await cloudSpatialAnchorSession.Diagnostics.SubmitManifestAsync(path);
}

診断バンドルのパーツ

診断バンドルには次のような情報が含まれています。

  • キーフレーム イメージ: 診断が有効な状態のときにセッションでキャプチャされた環境のイメージ。
  • ログ: ランタイムによって記録されたログ イベント。
  • セッション メタデータ: セッションを識別するメタデータ。