このトピックでは、Log Serviceのwebトラッキング機能を使用してUnity3Dログを収集する方法について説明します。

このタスクについて

Unity3Dは、Unity Technologiesによって開発されたクロスプラットフォームのゲームエンジンです。 このエンジンを使用すると、3Dビデオゲーム、VRビルディング、リアルタイム3Dアニメーション、その他のインタラクティブコンテンツを作成できます。

Log Serviceでは、webトラッキング機能を使用してUnity3Dログを収集できます。 webトラッキング機能の詳細については、「webトラッキング機能を使用してログを収集する」をご参照ください。 Unity Debug.Logは、Unity3Dログを収集する方法を説明する例として使用されます。

手順

  1. webトラッキング機能を有効にします。 詳細については、「webトラッキング機能を使用してログを収集する」をご参照ください。
  2. Unity3Dロギングハンドラを作成します。
    Unityエディターで、LogOutputHandler.csという名前のC# ファイルを作成し、ファイルに次のコードを追加して、次の変数を変更します。
    • project: Log Serviceプロジェクトの名前。
    • logstore: Logstoreの名前。
    • serviceAddr: Log Serviceプロジェクトのエンドポイント。 詳細については、「エンドポイント」をご参照ください。
    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. Unity3Dログを生成します。
    LogglyTest.csという名前のファイルを作成し、次のコードをファイルに追加します。
    UnityEngineを使用する。System.Collectionsを使用する;
    パブリッククラスLogglyTest : MonoBehaviour {
        void Start () {
            Debug.Log ("Hello world");
        }
    }
  4. 収集したログデータを表示します。
    Unity3Dアプリケーションを実行すると、ログが生成され、Log Serviceに送信されます。 Log Serviceコンソールでログを表示できます。