本文介绍如何通过Web Tracking采集Unity3D日志。
背景信息
Unity3D是由Unity Technologies开发的,一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
本文以采集Unity Debug.Log为例,介绍Unity3D日志的采集。
操作步骤
-
开通Web Tracking功能。
开通方法具体操作请参见 使用WebTracking采集日志 。 -
注册Unity3D LogHandler。
在Unity editor中创建C#文件 LogOutputHandler.cs ,输入如下脚本,并根据实际情况修改相关变量,分别为: - project:日志服务项目名称。
- logstore:日志库名称。
- serviceAddr:日志服务项目的地址,详情请参见 日志服务开发指南 中的 获取Endpoint 章节。
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; }
上述脚本可以异步发送日志到阿里云日志服务中,您还可以添加更多想要采集的字段。
-
产生Unity3D日志。
在工程中创建 LogglyTest.cs 文件,并输入如下脚本。 using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); }
-
查看日志。
运行Unity3D程序后,即可在日志服务控制台看到已采集的日志。