Unity logs

Accès aux logs de Unity

Dans le moteur de jeu Unity, deux types de journaux sont couramment utilisés : les journaux provenant de l’éditeur et les journaux provenant du jeu (Player Log). Chaque plateforme stocke ces journaux à des endroits différents :

Table des matières

Journaux de l’éditeur Unity

Voici où sont stockés les journaux de l’éditeur :

« ~ » correspond au dossier Home de votre utilisateur :

PlateformeChemin
Windows%LOCALAPPDATA%\Unity\Editor\Editor.log
Linux~/.config/unity3d/Editor.log
Mac~/Library/Logs/Unity/Editor.log

Vous pouvez également ouvrir directement les journaux via : « Window » -> « General » -> « Console » et cliquer sur « Open Editor Log ».

Unity open Editor log

Journaux du lecteur (Player Logs)

Voici où sont stockés les journaux du jeu dans une version construite (Player Log) :

PlateformeChemin
Windows%USERPROFILE%\AppData\LocalLow\CompanyName\ProductName\Player.log
Linux~/.config/unity3d/CompanyName/ProductName/Player.log
Mac~/Library/Logs/Company Name/Product Name/Player.log
Universal Windows Platform%USERPROFILE%\AppData\Local\Packages\<productname>\TempState\UnityPlayer.log
WebGLDans la console du navigateur : documentation de débogage WebGL
AndroidAccès direct non possible : utilisez Android Logcat
MacAccès direct non possible : voir la documentation d’Apple

Vérifiez la documentation pour d’autres informations.

Journaux en temps réel

Cette fonctionnalité est très utile, notamment lors des phases de test si vous avez un système intégré de signalement de bugs.

Votre système pourrait intégrer directement les journaux dans le rapport de bug. N’oubliez pas de demander le consentement de l’utilisateur via une case à cocher, par exemple :

Unity editor report bug

Signaler un bug dans l’un de mes jeux

Windows


public void SendLog()
{
    // Obtenir PlayerLog
    var logPath = Path.Combine(Environment.GetEnvironmentVariable("AppData"), "..", "LocalLow", Application.companyName, Application.productName, "Player.log");

    // Obtenir PlayerPrevLog
    var preLogPath = Path.Combine(Environment.GetEnvironmentVariable("AppData"), "..", "LocalLow", Application.companyName, Application.productName, "Player-prev.log");
    
    // Lire si le fichier existe
    if (File.Exists(logPath))
    {
        string logs = ReadShareFile(logPath);
    }
}

// Les journaux sont des fichiers partagés que nous pouvons lire avec cette fonction
private string ReadShareFile(string path)
{
    using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (var textReader = new StreamReader(fileStream))
    {
        return textReader.ReadToEnd();
    }
}

Linux

var pathLinux = CombinePaths("~/.config/unity3d", Application.companyName, Application.productName, "Player.log");

Mac

var pathMac = CombinePaths("~/Library/Logs", Application.companyName, Application.productName, "Player.log");

Pour Android et iOS, la collecte directe de journaux n’est pas possible. Le code natif doit être utilisé. Cependant, en tant qu’alternative, vous pouvez vous abonner à un événement de message de journal, pour ensuite les stocker : Application.logMessageReceived.

Ou bien, vous pouvez créer votre propre système de journaux, comme un Logger.

Illustration principale originale par Daniel Neiva Dan Neiva de Pixabay.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *