Utilisez la fonctionnalité de suivi web de Simple Log Service pour collecter les journaux Unity3D en interceptant la sortie de Debug.Log et en la transférant via HTTP.
Vue d'ensemble
Unity3D est un moteur de jeu multiplateforme développé par Unity Technologies qui permet de créer du contenu interactif, tel que des jeux vidéo en 3D, des environnements de réalité virtuelle et des animations 3D en temps réel.
Simple Log Service collecte les journaux des jeux Unity3D grâce à sa fonctionnalité de suivi web. Cette rubrique décrit une configuration complète utilisant Debug.Log comme source de journal. Pour plus d'informations sur le suivi web, consultez la section Utiliser la fonctionnalité de suivi web pour collecter les journaux.
Collecter les journaux d'une application Unity3D
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un projet et un Logstore Simple Log Service
L'endpoint de votre projet Simple Log Service
-
L'éditeur Unity installé
Activez la fonctionnalité de suivi web. Pour plus d'informations, consultez la section Utiliser la fonctionnalité de suivi web pour collecter les journaux.
-
Créez un gestionnaire de journalisation Unity3D.
Dans l'éditeur Unity, créez un fichier C# nommé
LogOutputHandler.cset ajoutez le script suivant. Remplacez les variables d'espace réservé avant l'exécution :project: nom de votre projet Simple Log Service. Consultez la section Gérer un projet.logstore: nom de votre Logstore. Consultez la section Gérer un Logstore.serviceAddr: endpoint de votre projet Simple Log Service. Consultez la section 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; } }Le script utilise une coroutine pour envoyer chaque entrée de journal de manière asynchrone. Chaque requête inclut le niveau de journal, le texte du message, la trace de la pile et le modèle de l'appareil. Pour collecter des champs supplémentaires, ajoutez davantage de paramètres à la chaîne
parametersen suivant le même modèle. -
Générez des journaux Unity3D.
Créez un fichier nommé
LogglyTest.cset ajoutez le script suivant. Attachez ce composant à n'importe quel GameObject de votre scène pour déclencher un journal de test au démarrage :using UnityEngine; using System.Collections; public class LogglyTest : MonoBehaviour { void Start () { Debug.Log ("Hello world"); } } -
Consultez les journaux collectés.
Exécutez votre application Unity3D. Les journaux sont envoyés à Simple Log Service au fur et à mesure de leur génération. Pour vérifier que la collecte a réussi, ouvrez la console Simple Log Service et vérifiez le Logstore configuré.