このトピックでは、Simple Log Service のウェブトラッキング機能を使用して Unity3D ログを収集する方法について説明します。
背景情報
Unity3D は、Unity Technologies が開発したクロスプラットフォームのゲームエンジンです。このエンジンを使用すると、3D ビデオゲーム、VR 建築、リアルタイム 3D アニメーションなどのインタラクティブなコンテンツを作成できます。
Simple Log Service を使用すると、ウェブトラッキング機能を利用して Unity3D ログを収集できます。ウェブトラッキング機能の詳細については、「ウェブトラッキング機能を使用したログの収集」をご参照ください。このトピックでは、Unity Debug.Log を例として、Unity3D ログを収集する方法について説明します。
操作手順
ウェブトラッキング機能を有効にします。詳細については、「ウェブトラッキング機能を使用したログの収集」をご参照ください。
-
Unity3D ログハンドラを作成します。
Unity エディターで LogOutputHandler.cs という名前の C# ファイルを作成し、次のスクリプトをファイルに追加して、以下の変数を変更します:
project:管理する Simple Log Service プロジェクトの名前。詳細については、「プロジェクトの管理」をご参照ください。
-
logstore:ご利用の Logstore 名。詳細については、「Logstore の管理」をご参照ください。 serviceAddr:Simple Log Service プロジェクトのエンドポイント。詳細については、「エンドポイント」をご参照ください。
using UnityEngine; using System.Collections; public class LogOutputHandler : MonoBehaviour { // シーン開始時に HandleLog 関数を登録し、debug.log イベントが発生したときに実行する public void OnEnable() { Application.logMessageReceived += HandleLog; } // オブジェクトがスコープ外になったときにコールバックを削除する 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"; // debug.log の出力をキャプチャし、ログを 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 += "&"; // 後で問題の特定に役立つ可能性のあるユーザー、ゲーム、またはデバイスのメタデータを追加する 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 という名前のファイルを作成し、次のスクリプトをファイルに追加します:
using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } }収集されたログを表示します。
Unity3D アプリケーションを実行すると、ログが生成され、Simple Log Service に送信されます。Simple Log Service コンソールでログを表示できます。