Android Enregistrement


Exemple

Toute application Android de qualité gardera une trace de ce qu'elle fait via les journaux d'application. Ces journaux facilitent le débogage pour aider le développeur à diagnostiquer ce qui se passe avec l'application. La documentation complète d'Android peut être trouvée ici , mais un résumé suit:


Enregistrement de base

La classe Log est la principale source d'écriture des journaux de développement, en spécifiant une tag et un message . La balise est ce que vous pouvez utiliser pour filtrer les messages de journal en identifiant les lignes provenant de votre activité particulière. Il suffit d'appeler

Log.v(String tag, String msg);

Et le système Android écrira un message au logcat:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

POINTE:
Notez l'ID de processus et l'ID de thread. S'ils sont identiques, le journal provient du thread principal / de l'interface utilisateur!

N'importe quelle balise peut être utilisée, mais il est courant d'utiliser le nom de la classe en tant que balise:

public static final String tag = MyAnimator.class.getSimpleName();

Niveaux de journal

Le logger Android dispose de 6 niveaux différents, chacun servant un objectif spécifique:

  • ERROR : Log.e()
    • Utilisé pour indiquer une défaillance critique, il s'agit du niveau imprimé lors du lancement d'une Exception .
  • WARN : Log.w()
    • Utilisé pour indiquer un avertissement, principalement pour les défaillances récupérables
  • INFO : Log.i()
    • Utilisé pour indiquer des informations de niveau supérieur sur l'état de l'application
  • DEBUG : Log.d()
    • Utilisé pour enregistrer des informations qui seraient utiles lors du débogage de l'application, mais qui entraveraient l'exécution de l'application
  • VERBOSE : Log.v()
    • Utilisé pour enregistrer des informations qui reflètent les petits détails sur l'état de l'application
  • ASSERT : Log.wtf()
    • Utilisé pour enregistrer des informations sur une condition qui ne devrait jamais se produire.
    • wtf signifie "What a Terrible Failure".

Motivation pour l'enregistrement

La motivation pour la journalisation est de trouver facilement les erreurs, les avertissements et autres informations en parcourant la chaîne des événements de l'application. Par exemple, imaginez une application qui lit les lignes d'un fichier texte, mais suppose à tort que le fichier ne sera jamais vide. La trace du journal (d'une application qui ne se connecte pas) ressemblerait à ceci:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Suivi par un tas de traces de pile qui mèneraient éventuellement à la ligne incriminée, où passer en revue avec un débogueur finirait par poser le problème

Cependant, la trace de journal d'une application avec la journalisation activée pourrait ressembler à ceci:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Un rapide coup d’œil aux journaux et il est évident que le fichier était vide.


Choses à considérer lors de la journalisation:

Bien que la journalisation soit un outil puissant permettant aux développeurs Android de mieux comprendre le fonctionnement interne de leur application, la journalisation présente certains inconvénients.

La lisibilité du journal:

Il est courant que les applications Android exécutent plusieurs journaux de manière synchrone. En tant que tel, il est très important que chaque journal soit facilement lisible et ne contienne que des informations pertinentes et nécessaires.

Performance:

La journalisation nécessite une petite quantité de ressources système. En général, cela ne pose pas de problème, cependant, en cas de surutilisation, la journalisation peut avoir un impact négatif sur les performances des applications.

Sécurité:

Récemment, plusieurs applications Android ont été ajoutées au marché Google Play pour permettre à l'utilisateur de consulter les journaux de toutes les applications en cours d'exécution. Cet affichage involontaire de données peut permettre aux utilisateurs d'afficher des informations confidentielles. En règle générale, supprimez toujours les journaux contenant des données non publiques avant de publier votre application sur le marché.


Conclusion:

La journalisation est une partie essentielle d'une application Android, en raison de la puissance qu'elle donne aux développeurs. La possibilité de créer une trace de journal utile est l'un des aspects les plus difficiles du développement logiciel, mais la classe Log d'Android facilite grandement la tâche.


Pour plus de documentation et d’exemples, consultez la section Journalisation et utilisation de Logcat.