本文介紹如何通過Web Tracking採集Unity3D日誌。
背景資訊
Unity3D是由Unity Technologies開發的,一個讓玩家輕鬆建立諸如三維視頻遊戲、建築可視化、即時三維動畫等類型互動內容的多平台的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。
Log Service支援使用Web Tracking採集Unity3D日誌,Web Tracking詳情請參見使用Web Tracking採集日誌。本文以採集Unity Debug.Log為例,介紹Unity日誌的採集。
操作步驟
開通Web Tracking,詳情請參見使用Web Tracking採集日誌。
註冊Unity3D LogHandler。
在Unity editor中建立C#檔案LogOutputHandler.cs,輸入如下指令碼,並根據實際情況修改相關變數,分別為:
project:Log Service專案名稱。更多資訊,請參見管理Project。
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中,您還可以添加更多想要採集的欄位。
產生Unity3D日誌。
在工程中建立LogglyTest.cs檔案,並輸入如下指令碼。
using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } }
查看日誌。
運行Unity程式後,即可在Log Service控制台看到已採集的日誌。