Dans ce chapitre, nous allons apprendre à paramétrer l'affichage des traces et à utiliser les fonctionnalités avancées d'Android Studio. Nous pourrons ainsi modifier les informations à afficher, utiliser de nouvelles couleurs, et gagner du temps en utilisant des raccourcis !
Configurez l'affichage
Gérez les filtres
Il n'est pas toujours facile de s'y retrouver lorsque vous avez des milliers de traces à l'écran. Heureusement, Android Studio a tout prévu : en haut à droite de l'onglet Logcat, vous trouvez quelques champs bien utiles :
Découvrons ensemble pourquoi utiliser ces 4 filtres !
Recherche par niveau
Le champ 1 permet d'afficher toutes les traces à partir du niveau sélectionné, le niveau le plus faible étant Verbose et le niveau le plus élevé étant Assert. Si vous choisissez Verbose, Android Studio affichera toutes les traces, quel que soit le niveau. Si vous choisissez Info, Android Studio affichera les traces de niveaux Info, Warn, Error et Assert.
Recherche par mot-clé
Le champ 2 permet de faire une recherche par mot-clé. Par défaut, la recherche est assez sommaire : les opérateurs logiques ne peuvent pas être utilisés. C'est-à-dire que vous ne pouvez pas taper data OR network, en espérant qu'il vous affiche toutes les lignes qui contiennent soit data soit network.
Recherche complexe
Le champ 3 permet d’ effectuer des recherches plus poussées. Cochez la case Regex et saisissez une expression régulière (ou expression rationnelle, pour les puristes). Je vous invite d’ailleurs à creuser ce sujet : un bon informaticien sait les utiliser, cela vous sera utile toute votre vie.
Filtrer les messages
Le champ 4 permet de filtrer les messages. Vous pourrez ainsi afficher uniquement les traces provenant de votre application (au lieu des traces générées par toutes les applications). Pour aller plus loin, vous pourrez paramétrer vos propres filtres et les enregistrer, en sélectionnant Edit Filter Configuration.
Sélectionnez les champs à afficher
Si les lignes vous paraissent trop longues, vous pouvez supprimer l'affichage de certains champs. Pour ce faire, toujours dans l'onglet Logcat, cliquez sur le petit engrenage à gauche, au-dessus de l’appareil photo.
Vous pourrez par exemple supprimer l'affichage des identifiants de processus et d'application, afin d'avoir des lignes plus courtes. Dans ce cas, une fenêtre s’ouvrira dans l’interface :
Gérez les couleurs
Par défaut, les traces de niveaux Error et supérieur sont affichées en rouge. C'est un bon indicateur visuel. Mais vous pouvez aller plus loin dans cette configuration. Par exemple, en affichant les traces Info en bleu et Warning en orange.
Deux options s’offrent à vous : importer un thème préconfiguré ou vous lancer dans la configuration manuelle.
Pour cette dernière option, rendez-vous dans les préférences d'Android Studio, puis saisissez logcat dans le champ de recherche en haut à gauche. Cliquez ensuite à gauche sur l'entrée Android Logcat. Normalement, elle est sélectionnée par défaut.
Suivez maintenant les 5 étapes ci-dessous pour configurer les traces.
1. Sauvegardez le thème actuel en utilisant un thème personnalisé : cliquez sur Duplicate... dans le menu déroulant :
Puis entrez le nom de votre thème et cliquez sur Entrée pour sauvegarder.
2. Sélectionnez le niveau de trace qui vous intéresse.
3. Décochez la case Use inherited attributes, pour activer la configuration des couleurs au-dessus.
4. Cochez la case Foreground puis cliquez sur la couleur pour la modifier. Vous pouvez également changer la couleur d'arrière-plan, ajouter des effets, etc. Vous pourrez voir le résultat en temps réel dans la fenêtre du dessous.
5. Pensez à sauvegarder vos modifications puis à les appliquer en cliquant sur Apply puis OK.
Je vous invite à regarder la vidéo ci-dessous pour revoir les différentes étapes de configuration des traces :
Utilisez les raccourcis
Comme nous l'avons vu dans le chapitre précédent, la méthode de trace requiert le paramètre TAG, correspondant au contexte de la trace. Dans la majorité des cas, vous préciserez le nom de la méthode. Sachant que vous allez préciser ce paramètre TAG dans chaque appel de trace, vous allez naturellement créer une variable de classe ; par exemple :
private static final String TAG = "MainActivity";
Ensuite, vous appellerez la méthode de trace de la façon suivante :
Log.d(TAG, "selectTab() called with: pos = [" + pos + "], mainMode = [" + mainMode + "]");
Au lieu de passer ma matinée à saisir ces lignes, je me suis reposé sur deux raccourcis bien pratiques : logt (pour log tag) et logm (pour log method). En saisissant juste logt puis Tabulation
, Android Studio génère la première ligne, en précisant automatiquement le nom de la méthode. En saisissant logm puis Tabulation
, c'est encore plus fort : Android Studio génère la ligne de trace, en précisant automatiquement le nom de la méthode et la valeur des paramètres.
Vous pouvez consulter les raccourcis disponibles, les modifier ou en créer de nouveaux. Pour cela, rendez-vous dans les préférences d'Android Studio. Saisissez AndroidLog dans le champ de recherche en haut à gauche. Puis déroulez la section correspondante dans la fenêtre de droite.
Vous remarquerez qu’il y a également des raccourcis disponibles en fonction du niveau de sévérité de votre trace (loge pour un Log.e, logi pour un Log.i…).
Dernière petite astuce : au lieu d'écrire en dur le nom de la classe pour la valeur de la variable TAG, écrivez plutôt :
private static final String TAG = MainActivity.class.getSimpleName();
Ainsi, si vous renommez un jour la classe en utilisant la fonction de renommage d'Android Studio (clic droit sur le nom de la classe, puis Refactor > Rename...), il vous modifiera automatiquement la variable TAG. Un bon exercice pour vous : essayez de modifier le raccourci logt pour qu'il vous génère automatiquement cette ligne !
Utilisez les bons niveaux de trace
Parmi tous les niveaux de trace disponibles, je vous conseille d'éviter d'utiliser les niveaux VERBOSE.
Le niveau VERBOSE porte bien son nom, il est verbeux. Servant à tracer des informations très triviales, il n'a pas vraiment d'intérêt. Nous verrons dans un prochain chapitre comment utiliser les points d'arrêt pour observer la valeur de certaines variables.
Il nous reste donc :
le niveau DEBUG, pour les changements mineurs ;
le niveau INFO, pour les changements majeurs ;
le niveau WARN, pour les anomalies qui ne devraient pas se produire, mais qui sont rattrapables. C'est un indicateur pour le développeur : il doit apporter une correction ;
le niveau ERROR pour les erreurs qui peuvent survenir. Une erreur bien gérée peut survenir sans pour autant arrêter l’app. Il est intéressant d’avoir une trace de ces erreurs afin de comprendre pourquoi elles surviennent et comment les éviter au maximum.
De la même manière, au lieu d'utiliser le nom de la classe pour le champ TAG, précisez plutôt la composante d'exécution. Cela permettra d'avoir des traces beaucoup plus lisibles dans de grosses applications. C'est-à-dire :
UI : tout ce qui touche à l'interface graphique ;
DATA : tout ce qui touche au modèle, aux données ;
NETWORK : tout ce qui touche au réseau, au trafic Internet ;
APP : tout ce qui touche à la logique métier.
En résumé
Les traces du Logcat peuvent être filtrées afin d’afficher uniquement les informations importantes.
Les informations affichées et les couleurs peuvent également être paramétrées afin de faciliter la lecture des logs.
Vous pouvez utiliser et paramétrer des raccourcis pour écrire des logs plus rapidement.
Maintenant que vous avez configuré votre système de gestion des traces, suivez-moi dans le prochain chapitre pour apprendre à analyser la pile après un plantage !