全部產品
Search
文件中心

Simple Log Service:採集Unity3D日誌

更新時間:Jun 30, 2024

本文介紹如何通過Web Tracking採集Unity3D日誌。

背景資訊

Unity3D是由Unity Technologies開發的,一個讓玩家輕鬆建立諸如三維視頻遊戲、建築可視化、即時三維動畫等類型互動內容的多平台的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。

Log Service支援使用Web Tracking採集Unity3D日誌,Web Tracking詳情請參見使用Web Tracking採集日誌。本文以採集Unity Debug.Log為例,介紹Unity日誌的採集。

操作步驟

  1. 開通Web Tracking,詳情請參見使用Web Tracking採集日誌

  2. 註冊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中,您還可以添加更多想要採集的欄位。

  3. 產生Unity3D日誌。

    在工程中建立LogglyTest.cs檔案,並輸入如下指令碼。

    using UnityEngine;
    using System.Collections;
    public class LogglyTest : MonoBehaviour {
        void Start () {
            Debug.Log ("Hello world");
        }
    }
  4. 查看日誌。

    運行Unity程式後,即可在Log Service控制台看到已採集的日誌。