Analisi dei log Android

Chiusura log Android

Come sviluppatore Android, tutti voi sapete che l’analisi dei log è una fase dello sviluppo e la incontriamo di tanto in tanto.
Ma l’analisi dei log è la cosa più impegnativa per il manutentore del codice o l’ingegnere di supporto.

Una volta che qualsiasi prodotto Android viene lanciato sul mercato e i clienti iniziano ad usarlo. Poi iniziano a venire i bug/problemi dello scenario reale ed è il lavoro principale per l’ingegnere di supporto/di manutenzione del progetto per analizzare il bug/problema con il set di log fornito.

Prima iniziamo con il tipo di Log disponibile sull’ecosistema Android:-

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

Il sistema di log di Android consiste in:

  • un driver del kernel e buffer del kernel per memorizzare i messaggi di log
  • C, C++ e classi Java per fare voci di log e accedere ai messaggi di log.
  • Logcat (un programma standalone per la visualizzazione dei messaggi di log)
  • DDMS (capacità di visualizzare e filtrare i messaggi di log dalla macchina host)

Android Log Buffer/container

  • main – il log principale dell’applicazione
  • events – per informazioni sugli eventi di sistema
  • radio – per informazioni relative a radio e telefono-
  • system – un log per messaggi di sistema di basso livello e debug

Cosa contiene il messaggio Log:-

Ogni messaggio nel log consiste in

  • Un tag che indica la parte del sistema o dell’applicazione da cui proviene il messaggio
  • Un timestamp (a che ora è arrivato questo messaggio)
  • Il livello di log del messaggio (o priorità dell’evento rappresentato dal messaggio) e
  • Il messaggio di log stesso (descrizione dettagliata dell’errore o dell’eccezione o dell’informazione ecc)

Cosa contiene ogni tipo di log:-

1. Log dell’applicazione

  • utilizza i metodi della classe android.util.Log per scrivere messaggi di diversa priorità nel log
  • Le classi Java dichiarano il loro tag staticamente come una stringa, che passano al metodo log
  • Il metodo log usato indica la “severità” del messaggio (o livello log)
  • I messaggi possono essere filtrati per tag o priorità quando i log vengono elaborati da strumenti di recupero (logcat)

2. Log di sistema

  • Utilizza la classe android.util.Slog per scrivere un messaggio con priorità diversa con i suoi messaggi associati
  • Molte classi del framework Android utilizzano il log di sistema per mantenere i loro messaggi separati dai messaggi (eventualmente rumorosi) del log dell’applicazione
  • Un messaggio formattato viene consegnato attraverso la libreria C/C++ fino al driver del kernel, che memorizza il messaggio nel buffer appropriato (buffer di sistema)

3. Event log

  • I messaggi del log degli eventi sono creati utilizzando la classe android.util.EventLog, che crea messaggi di log in formato binario.
  • Le voci del log consistono in codici tag binari, seguiti da parametri binari.
  • I codici tag dei messaggi sono memorizzati sul sistema in: /system/etc/event-log-tags.
  • Ogni messaggio ha la stringa del messaggio di log, così come i codici che indicano i valori associati a (memorizzati con) quella voce.

4. Radio log

  • Utilizzato per informazioni relative alla radio e al telefono (modem)
  • Le voci del log consistono in codici binari di tag e messaggi per informazioni sulla rete
  • Il sistema di log instrada automaticamente i messaggi con tag specifici nel buffer della radio

Il formato del log su Android

di seguito è il formato comune del log in Android

tv_sec tv_nsec priority pid tid tag messageLen Message

tag: tag del log
tv_sec & tv_nsec: il timestamp dei messaggi di log
pid: l’id del processo da cui provengono i messaggi di log
tid: l’id del thread
Il valore della priorità è uno dei seguenti valori di carattere, ordinati dalla priorità più bassa alla più alta:
V – Verbose (priorità più bassa)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (priorità più alta, su cui non viene mai stampato nulla)

Log-File locations
Ci sono diverse directory dove i log (inclusi quelli dei crash) vengono memorizzati e non sono standardizzati (es.cioè alcuni possono essere specifici della ROM). Ne sto mettendo alcune comuni qui.

  • /data/anr : Dalvik scrive tracce di stack qui su ANR, cioè “Application Not Responding” aka “Force-Close”
  • /data/dontpanic : contiene alcuni log di crash incluse le tracce
  • /data/kernelpanics :- Memorizza i log relativi al “kernel panic”
  • /data/tombstones :- può contenere diversi file tombstone_nn (nn è un numero da 0 a 10 e dopo 10 lo ripete di nuovo)

Strumento a riga di comando ‘Log’
Per catturare i log dai dispositivi android/emulatore Di seguito è riportato qualche strumento a riga di comando. Nei progetti di vita reale, ci sono applicazioni/strumenti di cattura dei log utilizzati per catturare i log sul dispositivo dell’utente e condividerli di nuovo con lo sviluppatore/manutentore per l’analisi.

  • adb logcat (mostra tutti i tipi di log per il sistema Android corrente
  • adb logcat -v threadtime (includerà data e ora)
  • adb logcat -v threadtime > logfile.txt (memorizza i log in logfile.txt)

Modelli di filtro utili
Puoi usare il filtro seguente nel tuo comando adb per filtrare i log. Puoi anche usare questo filtro per cercare il tuo file di logs (logs forniti dal dispositivo utente).

  • adb logcat -f <output_file> Salva tutti i logs in un file
  • adb logcat “*:E” Ottieni tutti gli errori e i fatals
  • adb logcat | grep -i “foo.example.” #ottenere tutti i log relativi a “pippo.esempio.*” tagname
  • adb logcat “application_or_tag_name:*” “*:S” Ottieni tutti i log per nome dell’applicazione
  • adb logcat -b events “gsm_service_state_change” “*:S” Ottieni tutti i cambiamenti di stato GSM
  • adb logcat -b radio Ottieni tutti gli eventi Radio

Log Analysis
Finora abbiamo ottenuto tutta l’esposizione fondamentale del sistema di log Android. Ora è il momento di analizzare i log provenienti dalla vostra applicazione o dall’utente finale. Qui possiamo dividere l’analisi dei log in due parti

  1. Debug Log:- file di log provenienti durante lo sviluppo e la fase di test
  2. Production Log:- file di log provenienti direttamente dall’utente finale.

Quindi indovina quale è difficile quello di produzione giusto? Quindi qual è l’approccio migliore per eseguire il debug e ottenere le informazioni desiderate dai log catturati? Come ho discusso sopra, possiamo farlo utilizzando

  • “utili modelli di filtro” e
  • utilizzando alcuni strumenti (esempio LogRabit, GoogleLogTool, e SonyLogTool)

Così nell’ultima analisi dei log Android è un apprendimento continuo e utilizzando il tuo processo di esperienza. Personalmente ho analizzato i log tramite filtri e strumenti pertinenti con la mia esperienza passata.

Ma una cosa è buona Ogni analisi Android (problema dell’utente finale / bug log) ti dà nuovo apprendimento ed esperienza. Quindi continua a farlo e goditi la tua vita come codificatore e manutentore del sistema android😎😎😎

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.