Android Log Analysis

Android logs caption

În calitate de dezvoltator Android, cu toții știți că analiza logurilor este o fază a dezvoltării și ne întâlnim cu ea din când în când.
Dar analiza logurilor este principala provocare pentru mentenanța codului sau pentru inginerul de suport.

După ce orice produs Android este lansat pe piață și clienții încep să-l folosească. Atunci încep să apară bug-uri / probleme de scenariu real și este principala sarcină pentru inginerul de asistență / inginerul de întreținere a proiectului să analizeze bug-ul / problema cu setul de jurnale furnizat.

În primul rând, începem cu tipul de jurnal disponibil în ecosistemul Android: –

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

Sistemul de jurnalizare Android constă din:

  • un driver de nucleu și tampoane de nucleu pentru stocarea mesajelor de jurnal
  • clase C, C++ și Java pentru realizarea intrărilor de jurnal și accesarea mesajelor de jurnal.
  • Logcat (un program de sine stătător pentru vizualizarea mesajelor de jurnal )
  • DDMS (capacitatea de a vizualiza și filtra mesajele de jurnal de pe mașina gazdă)

Android Log Buffer/container

  • main – jurnalul principal al aplicației
  • events – pentru informații despre evenimente de sistem
  • radio – pentru radio și telefonie-.informații legate de radio și radio
  • system – un jurnal pentru mesaje de sistem de nivel scăzut și pentru depanare

Ce conține mesajul Log:-

Care mesaj din jurnal este format din

  • O etichetă care indică partea sistemului sau a aplicației din care provine mesajul
  • Un timestamp (la ce oră a venit acest mesaj)
  • Ceasul nivelul de jurnalizare a mesajului (sau prioritatea evenimentului reprezentat de mesaj) și
  • Mesajul de jurnal propriu-zis (descrierea detaliată a erorii sau a excepției sau a informațiilor etc.)

Ce conține fiecare tip de jurnal:-

1. Jurnalul aplicației

  • utilizează android.util.metodele clasei Log pentru a scrie în jurnal mesaje cu priorități diferite
  • Classele Java își declară static tag-ul sub forma unui șir de caractere, pe care îl transmit metodei log
  • Metoda log utilizată indică „severitatea” mesajului (sau nivelul de log)
  • Mesajele pot fi filtrate după tag sau prioritate atunci când jurnalele sunt procesate de instrumentele de recuperare (logcat)

2. Jurnal de sistem

  • Utilizați android.util.Clasa Slog pentru a scrie un mesaj cu prioritate diferită cu mesajele sale asociate
  • Multe clase din cadrul Android utilizează jurnalul de sistem pentru a-și păstra mesajele separate de mesajele din jurnalul aplicației (eventual zgomotoase)
  • Un mesaj formatat este livrat prin intermediul bibliotecii C/C++ până la driverul kernelului, care stochează mesajul în bufferul corespunzător (buffer de sistem)

3. Jurnal de evenimente

  • Mesajele din jurnalele de evenimente sunt create cu ajutorul clasei android.util.EventLog, care creează mesaje de jurnal formatate binar.
  • Înregistrările de jurnal constau din coduri de etichetă binare, urmate de parametri binari.
  • Codurile de etichetă ale mesajelor sunt stocate în sistem la: /system/etc/event-log-tags.
  • Care mesaj are șirul pentru mesajul de jurnal, precum și codurile care indică valorile asociate cu (stocate cu) acea intrare.

4. Jurnal radio

  • Utilizat pentru informații legate de radio și telefon (modem)
  • Înregistrările de jurnal constau din etichete binare cod și mesaj pentru informații de rețea
  • Sistemul de jurnal direcționează automat mesajele cu etichete specifice în memoria tampon radio

Formatul de jurnal pe Android

mai jos este formatul de jurnal comun în android

tv_sec tv_nsec priority pid tid tag messageLen Message

etichetă: log tag
tv_sec & tv_nsec: data și ora mesajelor din jurnal
pid: ID-ul procesului de unde provin mesajele din jurnal
tid: ID-ul firului de execuție
Valoarea priorității este una dintre următoarele valori de caractere, ordonate de la cea mai mică la cea mai mare prioritate:
V – Verbose (cea mai mică prioritate)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (cea mai mare prioritate, pe care nu se tipărește niciodată nimic)

Locațiile fișierelor de jurnal
Există mai multe directoare în care se stochează jurnalele (inclusiv cele de la accidentări) și nu sunt standardizate(i.ex. unele pot fi specifice ROM-ului). Eu pun câteva comune aici.

  • /data/anr : Dalvik scrie urme de stivă aici pe ANR, adică. „Application Not Responding” aka „Force-Close”
  • /data/dontpanic : conține unele jurnale de accident, inclusiv urme
  • /data/kernelpanics :- Stochează jurnalele legate de „kernel panic”
  • /data/tombstones :- poate conține mai multe fișiere tombstone_nn (nn este un număr de la 0 la 10 și după 10 se repetă din nou)

Instrument în linie de comandă ‘Log’
Pentru a captura jurnalele de pe dispozitivele/emulatorul android Mai jos sunt câteva instrumente în linie de comandă. În proiectele din viața reală, există aplicații/instrumente de capturare a jurnalelor utilizate pentru a captura jurnalele de pe dispozitivul utilizatorului și împărtășite înapoi dezvoltatorului/întreținătorului pentru analiză.

  • adb logcat (afișează toate jurnalele de tip pentru sistemul android curent
  • adb logcat -v threadtime (va include data și ora)
  • adb logcat -v threadtime > logfile.txt (Stochează jurnalele în logfile.txt)

Modele de filtrare utile
Puteți utiliza filtrul de mai jos în comanda adb pentru a filtra jurnalele. De asemenea, puteți utiliza acest filtru pentru a căuta în fișierul dvs. de jurnale (jurnale furnizate de dispozitivul utilizatorului).

  • adb logcat -f <fișier_de_ieșire> Salvați toate jurnalele într-un fișier
  • adb logcat „*:E” Obțineți toate erorile și erorile fatale
  • adb logcat | grep -i „foo.example.” #obține toate jurnalele legate de „foo.example.*” tagname
  • adb logcat „application_or_tag_name:*” „*:S” Obține toate jurnalele în funcție de numele aplicației
  • adb logcat -b events „gsm_service_state_change” „*:S” Obține toate schimbările de stare GSM
  • adb logcat -b radio Obține toate evenimentele Radio

Analiză jurnal
Până acum am obținut toată expunerea fundamentală a sistemului de jurnalizare Android. Acum este momentul să analizăm jurnalele provenite de la aplicația sau de la utilizatorul final. Aici putem împărți analiza logurilor în două părți

  1. Debug Log:- fișierul de loguri care vine în timpul fazei de dezvoltare și testare
  2. Production Log:- fișierul de loguri care vine direct de la utilizatorul final.

Așa că ghiciți care dintre ele este dificil Production one Right? Deci, care este cea mai bună abordare pentru a depana și a obține informațiile dorite din jurnalele capturate? Așa cum am discutat mai sus, Putem face acest lucru folosind

  • „Modele de filtrare utile” și
  • Cu ajutorul unor instrumente (de exemplu LogRabit, GoogleLogTool și SonyLogTool)

Așa că, în cele din urmă, analiza jurnalelor Android este un proces de învățare continuă și de utilizare a experienței tale. Personal, am analizat jurnalele prin intermediul unui filtru și al unui instrument relevant cu experiența mea din trecut.

Dar un lucru este bun Fiecare analiză Android (jurnal de probleme/bug-uri al utilizatorului final) vă oferă o nouă învățare și experiență. Deci, continuați să faceți acest lucru și bucurați-vă de viața dvs. ca programator și întreținător al sistemului android😎😎😎

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.