采集Unity3D日志
本文介紹如何通過(guò)Web Tracking采集Unity3D日志。
背景信息
Unity3D是由Unity Technologies開(kāi)發(fā)的,一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類(lèi)型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,是一個(gè)全面整合的專(zhuān)業(yè)游戲引擎。
日志服務(wù)支持使用Web Tracking采集Unity3D日志,Web Tracking詳情請(qǐng)參見(jiàn)使用Web Tracking采集日志。本文以采集Unity Debug.Log為例,介紹Unity日志的采集。
操作步驟
開(kāi)通Web Tracking,詳情請(qǐng)參見(jiàn)使用Web Tracking采集日志。
注冊(cè)Unity3D LogHandler。
在Unity editor中創(chuàng)建C#文件LogOutputHandler.cs,輸入如下腳本,并根據(jù)實(shí)際情況修改相關(guān)變量,分別為:
project:日志服務(wù)項(xiàng)目名稱(chēng)。更多信息,請(qǐng)參見(jiàn)管理Project。
logstore:日志庫(kù)名稱(chēng)。更多信息,請(qǐng)參見(jiàn)管理Logstore。
serviceAddr:日志服務(wù)項(xiàng)目的地址,詳情請(qǐng)參見(jiàn)服務(wù)入口。
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; } }
提供上述腳本可以異步發(fā)送日志到阿里云日志服務(wù)中,您還可以添加更多想要采集的字段。
產(chǎn)生Unity3D日志。
在工程中創(chuàng)建LogglyTest.cs文件,并輸入如下腳本。
using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } }
查看日志。
運(yùn)行Unity程序后,即可在日志服務(wù)控制臺(tái)看到已采集的日志。