このタスクについて

Unity3D は、あらゆるプラットフォーム向けの統合されたゲーム開発ツールです。Unity Technologies の開発した Unity3D では、3D ビデオゲーム、建築的視覚化、リアルタイム 3D アニメーションといったさまざまなインタラクティブコンテンツを簡単に作成できます。Unity3D は完全に統合されたプロフェッショナルなゲームエンジンです。

Log Service の Web トラッキング を使用することにより、Unity3D のログを簡単に収集できます。本ドキュメントでは、Webトラッキング機能を使用して Unity3D のログ Unity Debug.Log を Log Service に収集する方法を紹介します。

手順

  1. Web トラッキング機能の有効化
    詳細については、「Web トラッキング」をご参照ください。
  2. Unity3D LogHandler の登録
    Unity エディタで C# ファイル LogOutputHandler.csを作成します。以下のコードを入力し、コード内の次の 3 つのメンバー変数を変更します。
    • プロジェクト: ログプロジェクトの名前
    • Logstore: Logstore の名前
    • serviceAddr: ログプロジェクトのアドレス

      詳細については、「サービスエンドポイント」をご参照ください。

    using UnityEngine;
    using System.Collections;
    public class LogOutputHandler : MonoBehaviour
    {
        //Register the HandleLog function on scene start to fire on debug.log events
        public void OnEnable()
        {
            Application.logMessageReceived += HandleLog;
        }
        //Remove callback when object goes out of scope
        public void OnDisable()
        {
            Application.logMessageReceived -= HandleLog;
        }
        string project = "your project name";
        string logstore = "your logstore name";
        string serviceAddr = "http address of your log service project";
        //Capture debug.log output, send logs to Loggly
        public void HandleLog(string logString, string stackTrace, LogType type)
        {
            string parameters = "";
            parameters += "Level=" + WWW.EscapeURL(type.ToString());
            parameters += "&";
            parameters += "Message=" + WWW.EscapeURL(logString);
            parameters += "&";
            parameters += "Stack_Trace=" + WWW.EscapeURL(stackTrace);
            parameters += "&";
            //Add any User, Game, or Device MetaData that would be useful to finding issues later
            parameters += "Device_Model=" + WWW.EscapeURL(SystemInfo.deviceModel);
            string url = "http://" + project + "." + serviceAddr + "/logstores/" + logstore + "/track? APIVersion=0.6.0&" + parameters;
            StartCoroutine(SendData(url));
        }
        public IEnumerator SendData(string url)
        {
            WWW sendLog = new WWW(url);
            yield return sendLog;
        }
    }

    上記のコードにより、非同期に Log Service にログを送信することができます。収集するフィールドを上記コードに追加することもできます。

  3. Unity ログの生成
    プロジェクトで、LogglyTest.csファイルを作成し、 次のコードを追加してください。
    using UnityEngine;
    using System.Collections;
    public class LogglyTest : MonoBehaviour {
        void Start () {
            Debug.Log ("Hello world");
        }
    }
  4. コンソールでログのプレビュー

    上記の手順を完了したら、Unity プログラムを実行します。送信されたログを Log Service コンソールでプレビューできます。

    上記の例では、Debug.LogDebug.LogErrorDebug.LogExceptionといったログを収集する方法です。Unity のコンポーネントオブジェクトモデル、Unity プログラムのクラッシュ API、およびその他のログ API を使用することで、クライアント上のデバイス情報を容易に収集できます。