このトピックでは、Simple Log Serviceのwebトラッキング機能を使用してUnity3Dログを収集する方法について説明します。
背景情報
Unity3Dは、Unity Technologiesによって開発されたクロスプラットフォームのゲームエンジンです。 このエンジンを使用すると、3Dビデオゲーム、VRビル、リアルタイム3Dアニメーションなどのインタラクティブコンテンツを作成できます。
Simple Log Serviceでは、webトラッキング機能を使用してUnity3Dログを収集できます。 webトラッキング機能の詳細については、「webトラッキング機能を使用したログの収集」をご参照ください。 このトピックでは、Unity3Dログを収集する方法を説明する例として、Unity Debug.Logを使用します。
手順
webトラッキング機能を有効にします。 詳細については、「webトラッキング機能を使用したログの収集」をご参照ください。
Unity3Dロギングハンドラを作成します。
Unityエディターで、LogOutputHandler.csという名前のC# ファイルを作成し、ファイルに次のスクリプトを追加して、次の変数を変更します。
project: 管理するSimple Log Serviceプロジェクトの名前。 詳細については、「プロジェクトの管理」をご参照ください。
logstore: 管理するLogstoreの名前。 詳細については、「Logstoreの管理」をご参照ください。
serviceAddr: Simple Log Serviceプロジェクトのエンドポイント。 詳細については、「エンドポイント」をご参照ください。
UnityEngineを使用して
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; } }
上記のスクリプトを使用して、ログをSimple Log Serviceに非同期で送信できます。 スクリプトで他のフィールドを指定してフィールドを収集することもできます。
Unity3Dログを生成します。
LogglyTest.csという名前のファイルを作成し、次のスクリプトをファイルに追加します。
UnityEngineを使用して
using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } }
収集したログを表示します。
Unity3Dアプリケーションを実行すると、ログが生成され、Simple Log Serviceに送信されます。 Simple Log Serviceコンソールでログを表示できます。