NoaDebugger v1.0.0NoaDebugger v1.0.0
  • v1.6.0
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.0
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • v1.6.0
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.0
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • APILogについて

APILogについて

Web APIの通信ログを表示します。

通信ログを表示するには、NOA Debuggerを組み込んだアプリケーション内でログの出力を行う必要があります。
通信ログを出力する方法は、ページ後半の 通信ログの出力 を参照してください。

画面のUI構成と操作方法

api-log

1.通信ログ

出力した通信ログの一覧を表示します。

  • 任意の通信ログを押下することでハイライト表示を行い、画面右側に選択された通信の詳細を表示します。
    ※縦画面の場合は下部に表示します。
  • 任意の通信ログを長押しすることで、クリップボードに通信ログの内容をコピーします。
  • 選択した通信ログを再度押下することで、詳細を非表示にします。
  • 任意の通信ログの右側にある[×]ボタンを長押しすることで、対象のログを削除します。

log-entries

要素名表示情報
a.ログタイプログのタイプを表します。各色の意味については後述の情報を参照してください。
b.出力時間ログを出力した時間を表示します。
c.APIパスAPIパスとクエリを表示します。
d.受信バイト数受信バイト数を表示します。
e.通信にかかった時間通信にかかった時間 (ミリ秒) を表示します。
f.削除ボタン[×]ボタンを長押しすることで対象のログを削除します。

2.通信ステータス

通信の数・合計受信バイト数・合計時間を表示します。
※通信ログがある場合にのみ表示します。

log-status

要素名表示情報
a.通信の数API通信を実行した回数を表示します。
b.合計受信バイト数合計の受信バイト数を表示します。
c.合計時間合計の通信にかかった時間 (ミリ秒) を表示します。

3.通信詳細

選択した通信ログの詳細を表示します。通信の詳細は以下の内容を含みます。

log-details

要素名表示情報
a.RequestAPI詳細・リクエストヘッダ・リクエストボディを表示します。
b.Responseレスポンスヘッダ・レスポンスボディを表示します。

Content-Type が application/json の場合は、リクエストボディ・レスポンスボディを整形して表示します。
JSONを正しく解析できなかった場合は、入力されたテキストをそのまま表示します。

4.通信ログ収集ボタン

[●REC] ボタンを押下することで通信ログ収集のオン・オフを切り替えることができます。アプリ起動時は通信ログの収集を行います。
[●REC]ボタンが赤色の状態は収集中、白色は停止中を意味します。

5.一括削除ボタン

[一括削除]ボタンを押下することで保持しているログを全て削除します。

6.ダウンロードボタン

[ダウンロード]ボタンを押下することでログ情報をダウンロードするダイアログを表示します。
ログ情報がない場合は、[ダウンロード]ボタンを押下できません。

ダウンロードダイアログについてはデータのダウンロードについてを参照してください。

7.成功スイッチ

200番台のステータスコードで終了した通信の数を表示します。[●]ボタンを押下しメッセージの表示・非表示を切り替えることができます。

8.エラースイッチ

200番台以外のステータスコードで終了した通信の数を表示します。[●]ボタンを押下しエラーの表示・非表示を切り替えることができます。

9.検索フィールド

入力したテキストでログをフィルタリングします。
一致するテキストを含むログを表示します。
※通信詳細の情報は検索の対象外です。

10.検索破棄ボタン

[×]ボタンを押下することで、検索フィールドに入力したテキストを破棄します。

11.ショートカットボタン

[↓]ボタンを押下することで、ログの一覧を一番下までスクロールします。
※最新のログを表示している場合は、ショートカットボタンを表示しません。

12.コピーボタン

[コピー]ボタンを押下することで、クリップボードに通信ログの内容をコピーします。
※ログ長押しと同じ挙動です。

ログタイプ一覧

出力色ログタイプ
type-message200番台のステータスコードで終了した通信を表します。
type-error200番台以外のステータスコードで終了した通信を表します。

通信ログの出力

NOA Debuggerを組み込んだアプリケーション内で NoaDebugger.ApiLogger.Log() を呼ぶことで、NOA Debugger上で通信ログを表示します。

UnityEngine.Networking.UnityWebRequest を用いてPOST通信を行う場合のサンプルコードを以下に示します。
※ NOA Debuggerが提供する機能を利用する場合は、必ずNOA_DEBUGGERのシンボル定義を利用してください。

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
#if NOA_DEBUGGER
using NoaDebugger;
#endif
using UnityEngine;
using UnityEngine.Networking;

public class ApiLogSample : MonoBehaviour
{
    void Start()
    {
        const string endpoint = "https://example.com/api/foo";
        const string requestBodyJson = "{ \"field1\":\"1\", \"field2\":\"2\" }";
        StartCoroutine(ApiLogSample.PostJson(endpoint, requestBodyJson));
    }

    static IEnumerator PostJson(string endpoint, string requestBodyJson)
    {
        // POSTリクエストを作成します。
        using var request = new UnityWebRequest(endpoint, "POST");
        var requestHeaders = new Dictionary<string, string>
        {
            { "Content-Type", "application/json" }
        };
        byte[] rawData = Encoding.UTF8.GetBytes(requestBodyJson);
        request.uploadHandler = new UploadHandlerRaw(rawData);
        request.downloadHandler = new DownloadHandlerBuffer();
        foreach (KeyValuePair<string, string> header in requestHeaders)
        {
            request.SetRequestHeader(header.Key, header.Value);
        }

        // 通信を行い、かかった時間を計測します。
        var stopwatch = new Stopwatch();
        stopwatch.Start();
        yield return request.SendWebRequest();
        stopwatch.Stop();

#if NOA_DEBUGGER
        // NOA Debuggerにログを出力します。UnityWebRequestインスタンスが破棄される前に実行してください。
        var apiLog = new ApiLog
        {
            Url = request.uri,
            Method = request.method,
            StatusCode = (int)request.responseCode,
            ContentSize = (long)request.downloadedBytes,
            ResponseTimeMilliSeconds = stopwatch.ElapsedMilliseconds,
            RequestHeaders = requestHeaders,
            RequestBody = requestBodyJson,
            ResponseHeaders = request.GetResponseHeaders(),
            ResponseBody = request.downloadHandler.text
        };
        ApiLogger.Log(apiLog);
#endif
    }
}

NoaDebugger.ApiLog は以下のプロパティを持ちます。

プロパティ名型説明設定がない場合の動作
UrlSystem.Uriリクエスト先URLです。ApiLogger.Log() にて ArgumentException が発生します。
Methodstringリクエストメソッドです。ApiLogger.Log() にて ArgumentException が発生します。
StatusCodeintステータスコードです。0 としてログに反映します。
ContentSizelongレスポンスのデータサイズです。0 としてログに反映します。
ResponseTimeMilliSecondslongレスポンスにかかった時間をミリ秒で指定します。0 としてログに反映します。
RequestHeadersSystem.Collections.Generic.Dictionary<string,string>リクエストヘッダです。通信詳細で表示しません。
RequestBodystringリクエストボディです。通信詳細で表示しません。
ResponseHeadersSystem.Collections.Generic.Dictionary<string,string>レスポンスヘッダです。通信詳細で表示しません。
ResponseBodystringレスポンスボディです。通信詳細で表示しません。

提供APIについて

APILogが提供するAPIについてはAPI一覧を参照してください。