Utilize o recurso de web tracking do Simple Log Service para coletar logs do Unity3D. O processo intercepta a saída de Debug.Log e a encaminha via HTTP.
Visão geral
O Unity3D é um motor de jogos multiplataforma desenvolvido pela Unity Technologies. Ele permite criar conteúdo interativo, como videogames 3D, ambientes de VR e animações 3D em tempo real.
O Simple Log Service coleta logs de jogos Unity3D por meio do recurso de web tracking. Este tópico apresenta uma configuração completa que utiliza Debug.Log como source de log. Para obter detalhes sobre o web tracking, consulte Usar o recurso de web tracking para coletar logs.
Coletar logs de uma aplicação Unity3D
Pré-requisitos
Antes de começar, verifique se você possui:
Um projeto e um Logstore do Simple Log Service
O endpoint do seu projeto do Simple Log Service
-
O editor Unity instalado
Ative o recurso de web tracking. Para mais informações, consulte Usar o recurso de web tracking para coletar logs./@cmd
-
Crie um handler de logging para Unity3D./@cmd
No editor Unity, crie um arquivo C# chamado LogOutputHandler.cs/@filepath e adicione o script abaixo. Substitua as variáveis de espaço reservado antes de executar:
project: nome do seu projeto do Simple Log Service. Consulte Gerencie um projeto.logstore: nome do seu Logstore. Consulte Gerencie um Logstore.serviceAddr: endpoint do seu projeto do Simple Log Service. Consulte Endpoints.
using UnityEngine; using System.Collections; public class LogOutputHandler : MonoBehaviour { // Register the HandleLog function on scene start to capture 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 and send logs to Simple Log Service 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 device metadata to help identify issues 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; } }O script utiliza uma corrotina para enviar cada entrada de log de forma assíncrona. Cada requisição inclui o nível de log, texto da mensagem, stack trace e modelo do dispositivo. Para coletar campos adicionais, acrescente mais parâmetros à string
parametersseguindo o mesmo padrão. -
Gere logs do Unity3D./@cmd
Crie um arquivo chamado LogglyTest.cs/@filepath e adicione o script a seguir. Anexe este componente a qualquer GameObject na sua cena para disparar um log de teste na inicialização:
using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } } -
Visualize os logs coletados./@cmd
Execute sua aplicação Unity3D. Os logs são enviados ao Simple Log Service à medida que são gerados. Para verificar se a coleta foi bem-sucedida, abra o console do Simple Log Service e verifique o Logstore configurado.