Analyse des logs Android

La légende des logs Android

En tant que développeur Android, vous savez tous que l’analyse des logs est une phase du développement et nous la rencontrons de temps en temps.
Mais l’analyse des logs est le principal défi pour le mainteneur de code ou l’ingénieur support.

Une fois que tout produit Android lancé sur le marché et que les clients commencent à l’utiliser. Ensuite, les bugs / problèmes de scénario réel commencent à venir et c’est le travail principal pour l’ingénieur de soutien / ingénieur de maintenance de projet pour analyser le bug / problème avec l’ensemble fourni de journaux.

D’abord nous commençons par le type de Log disponible sur l’éco-système Android:-

  • Application Log
  • System Log
  • Event Log
  • Radio Log

Le système de journalisation Android se compose de :

  • un pilote de noyau et des tampons de noyau pour stocker les messages de journal
  • C, C++ et des classes Java pour faire des entrées de journal et accéder aux messages de journal.
  • Logcat (un programme autonome pour visualiser les messages du journal )
  • DDMS (possibilité de visualiser et de filtrer les messages du journal à partir de la machine hôte)

Android Log Buffer/container

  • main – le journal principal de l’application
  • events – pour les informations relatives aux événements du système
  • radio – pour les informations relatives à la radio et au téléphone.informations liées à la radio et au téléphone
  • system – un journal pour les messages système de bas niveau et le débogage

Ce que contient le message du journal :-

Chaque message du journal se compose de

  • Une balise indiquant la partie du système ou de l’application d’où provient le message
  • Un horodatage (à quelle heure ce message est arrivé)
  • Le niveau de journal du message (ou priorité de l’événement représenté par le message) et
  • Le message de journal lui-même(description détaillée de l’erreur ou de l’exception ou de l’information etc)

Ce que contient chaque type de journal :-

1. Journal d’application

  • utiliser android.util.Log class methods pour écrire des messages de priorité différente dans le journal
  • Les classes Java déclarent leur tag statiquement comme une chaîne de caractères, qu’elles passent à la méthode log
  • La méthode log utilisée indique la « gravité » du message (ou le niveau du journal)
  • Les messages peuvent être filtrés par tag ou par priorité lorsque les journaux sont traités par des outils de récupération (logcat)

2. Journal système

  • Utiliser la classe android.util.Slog pour écrire un message avec une priorité différente avec ses messages associés
  • De nombreuses classes du framework Android utilisent le journal système pour garder leurs messages séparés des messages du journal de l’application (éventuellement bruyants)
  • Un message formaté est livré par la bibliothèque C/C++ jusqu’au pilote du noyau, qui stocke le message dans le tampon approprié(tampon système)

3. Journal des événements

  • Les messages du journal des événements sont créés à l’aide de la classe android.util.EventLog, qui crée des messages de journal au format binaire.
  • Les entrées du journal sont constituées de codes de balises binaires, suivis de paramètres binaires.
  • Les codes de balises des messages sont stockés sur le système à l’adresse : /system/etc/event-log-tags.
  • Chaque message comporte la chaîne de caractères du message du journal, ainsi que des codes indiquant les valeurs associées à (stockées avec) cette entrée.

4. Journal radio

  • Utilisé pour les informations liées à la radio et au téléphone(modem)
  • Les entrées du journal consistent en un code de balises binaires et un message pour les informations du réseau
  • Le système de journalisation achemine automatiquement les messages avec des balises spécifiques dans le tampon radio

Format du journal sur Android

ceci est le format de journal commun dans android

tv_sec tv_nsec priority pid tid tag messageLen Message

tag : Tag du journal
tv_sec & tv_nsec : l’horodatage des messages du journal
pid : l’id du processus d’où proviennent les messages du journal
tid : l’id du thread
La valeur de priorité est l’une des valeurs de caractères suivantes, ordonnées de la plus basse à la plus haute priorité :
V – Verbose (priorité la plus basse)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (priorité la plus élevée, sur laquelle rien n’est jamais imprimé)

Log-File locations
Il existe plusieurs répertoires où les journaux (y compris ceux des crashs) se stockent et ils ne sont pas normalisés(i.c’est-à-dire que certains peuvent être spécifiques à la ROM). Je mets quelques communs ici.

  • /data/anr : Dalvik écrit les traces de pile ici sur ANR, c’est-à-dire. « Application Not Responding » aka « Force-Close »
  • /data/dontpanic : contient quelques journaux de crash incluant des traces
  • /data/kernelpanics :- Stocke les journaux liés à la « panique du noyau »
  • /data/tombstones :- Peut contenir plusieurs fichiers tombstone_nn (nn est un nombre de 0 à 10 et après 10 le répéter à nouveau)

Outil de ligne de commande ‘Log’
Pour capturer les Logs des appareils android/émulateur Ci-dessous se trouve un outil de ligne de commande. Dans les projets de la vie réelle, il existe des applications/outils de capture de logs utilisés pour capturer les logs sur l’appareil de l’utilisateur et les partager en retour au développeur/mainteneur pour analyse.

  • adb logcat (montre tous les journaux de type pour le système android actuel
  • adb logcat -v threadtime (il inclura la date et l’heure)
  • adb logcat -v threadtime > logfile.txt (Stocke les journaux dans logfile.txt)

Motifs de filtre utiles
Vous pouvez utiliser le filtre ci-dessous dans votre commande adb pour filtrer les journaux. Vous pouvez également utiliser ce filtre pour rechercher votre fichier de logs(logs fournis par le périphérique utilisateur).

  • adb logcat -f <fichier_de_sortie> Enregistrer tous les logs dans un fichier
  • adb logcat « *:E » Obtenir toutes les erreurs et fatals
  • adb logcat | grep -i « foo.exemple. » #Obtenir tous les journaux relatifs à « foo.example.* » tagname
  • adb logcat « application_ou_tag_name:* » « *:S » Obtenir tous les journaux par nom d’application
  • adb logcat -b events « gsm_service_state_change » « *:S » Obtenir tous les changements d’état GSM
  • adb logcat -b radio Obtenir tous les événements Radio

Analyse des journaux
Jusqu’à présent, nous obtenons toute l’exposition fondamentale du système de journalisation Android. Maintenant le temps d’analyser les logs provenant de votre application ou de l’utilisateur final. Ici, nous pouvons diviser l’analyse des logs en deux parties

  1. Debug Log:- fichier de logs venant pendant la phase de développement et de test
  2. Production Log:- fichier de logs venant directement de l’utilisateur final.

Donc devinez lequel est difficile Production one Right ? Alors quelle est la meilleure approche pour déboguer et obtenir les informations souhaitées à partir des journaux capturés ? Comme je l’ai discuté ci-dessus, Nous pouvons le faire en utilisant

  • « Useful Filter Patterns » et
  • En utilisant un certain outil (exemple LogRabit, GoogleLogTool, et SonyLogTool)

So in the last Android log analysis is continuous learning and utilizing your experience process. Personnellement, j’ai analysé les journaux via le filtre et l’outil pertinents avec mon expérience passée.

Mais une chose est bonne Chaque analyse androïde (problème de l’utilisateur final / journal de bogue) vous donne un nouvel apprentissage et une nouvelle expérience. Alors continuez à le faire et profitez de votre vie en tant que codeur et mainteneur du système android😎😎😎

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.