Android Log Analysis

Android logs caption

Jako vývojáři Androidu všichni víte, že analýza logů je fází vývoje a čas od času se s ní setkáváme.
Ale analýza logů je hlavní výzvou pro správce kódu nebo inženýra podpory.

Jakmile je jakýkoli produkt se systémem Android uveden na trh a zákazníci jej začnou používat. Pak se začnou objevovat chyby/problémy podle skutečného scénáře a hlavním úkolem inženýra podpory/inženýra údržby projektu je analyzovat chybu/problém pomocí poskytnuté sady logů.

Nejprve začneme typem logů dostupných v ekosystému Android:-

  • Log aplikace
  • Systémový log
  • Log událostí
  • Rádiový log

Systém logování Androidu se skládá z následujících částí:

  • jádrový ovladač a jaderné vyrovnávací paměti pro ukládání zpráv protokolu
  • Třídy v jazycích C, C++ a Java pro vytváření záznamů v protokolu a přístup ke zprávám protokolu.
  • Logcat (samostatný program pro prohlížení zpráv protokolu )
  • DDMS (možnost prohlížení a filtrování zpráv protokolu z hostitelského počítače)

Android Log Buffer/container

  • main – hlavní protokol aplikace
  • events – pro informace o systémových událostech
  • radio – pro rádio a telefon-.související s informacemi
  • system – pro nízkoúrovňové systémové zprávy a ladění

Co zpráva Log obsahuje:-

Každá zpráva v protokolu se skládá z

  • Značky označující část systému nebo aplikace, ze které zpráva přišla
  • Časového razítka (v kolik hodin tato zpráva přišla)
  • Časového razítka (v kolik hodin tato zpráva přišla). úroveň protokolu zprávy (nebo priorita události reprezentované zprávou) a
  • Samotná zpráva protokolu (podrobný popis chyby nebo výjimky nebo informace atd.)

Co obsahuje každý typ protokolu:-

1. Protokol aplikace

  • používá android.util.Log metody třídy pro zápis zpráv s různou prioritou do logu
  • Třídy Java deklarují svou značku staticky jako řetězec, který předávají metodě logu
  • Použitá metoda logu udává „závažnost“ zprávy (nebo úroveň logu)
  • Zprávy lze filtrovat podle značky nebo priority při zpracování logů nástroji pro jejich vyhledávání (logcat)

2. Systémový log

  • Použijete android.util.Slog třídu pro zápis zprávy s různou prioritou s přidruženými zprávami
  • Mnoho tříd frameworku Android využívá systémový log, aby byly jejich zprávy odděleny od (případně rušivých) zpráv aplikačního logu
  • Zformátovaná zpráva je doručena prostřednictvím knihovny C/C++ až do ovladače jádra, který zprávu uloží do příslušné vyrovnávací paměti(system buffer)

3. Protokol událostí

  • Zprávy protokolu událostí se vytvářejí pomocí třídy android.util.EventLog, která vytváří zprávy protokolu v binárním formátu.
  • Záznamy protokolu se skládají z binárních kódů značek, za kterými následují binární parametry.
  • Kódy značek zpráv jsou uloženy v systému na adrese:
  • Každá zpráva obsahuje řetězec zprávy protokolu a také kódy označující hodnoty spojené s danou položkou (uložené u ní).

4. Rádiový protokol

  • Slouží pro informace týkající se rádia a telefonu (modemu)
  • Záznamy v protokolu se skládají z binárních značek kód a zpráva pro Síťové informace
  • Záznamový systém automaticky směruje zprávy s určitými značkami do rádiové vyrovnávací paměti

Formát protokolu v systému Android

Níže je uveden běžný formát protokolu v systému Android

tv_sec tv_nsec priority pid tid tag messageLen Message

značka: tag protokolu
tv_sec & tv_nsec: časová značka zpráv protokolu
pid: id procesu, odkud zprávy protokolu pocházejí
tid: hodnota priority je jedna z následujících znakových hodnot, seřazených od nejnižší po nejvyšší prioritu:
V – Verbose (nejnižší priorita)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (nejvyšší priorita, při které se nikdy nic nevypisuje)

Umístění logovacích souborů
Existuje několik adresářů, kam se ukládají logy (včetně těch z pádů) a nejsou standardizovány(tj.Tj. některé mohou být specifické pro ROM). Dávám sem některé společné.

  • /data/anr : Dalvik sem zapisuje stack traces na ANR, tj. „Application Not Responding“ alias „Force-Close“
  • /data/dontpanic : obsahuje některé logy pádů včetně stop
  • /data/kernelpanics :- Ukládá logy související s „kernel panic“
  • /data/tombstones :- může obsahovat několik souborů tombstone_nn (nn je číslo od 0 do 10 a po 10 se opět opakuje)

‚Log‘ command-line tool
Pro zachycení logů z android zařízení/emulátoru Níže je uveden nástroj příkazového řádku. V reálných projektech se používají aplikace/nástroje pro zachytávání logů na uživatelském zařízení a jejich sdílení zpět vývojáři/správci pro analýzu.

  • adb logcat (zobrazí všechny typy logů pro aktuální systém android
  • adb logcat -v threadtime (bude obsahovat datum a čas)
  • adb logcat -v threadtime > logfile.txt (Uloží logy do souboru logfile.txt)

Užitečné vzory filtrů
Pro filtrování logů můžete v příkazu adb použít níže uvedený filtr. Tento filtr můžete také použít k prohledávání souboru s protokoly (protokoly poskytnuté uživatelským zařízením).

  • adb logcat -f <výstupní_soubor> Uložení všech protokolů do souboru
  • adb logcat „*:E“ Získání všech chyb a fatalů
  • adb logcat | grep -i „foo.example.“ #získat všechny protokoly týkající se „foo.example.*“ tagname
  • adb logcat „application_or_tag_name:*“ „*:S“ Získejte všechny logy podle názvu aplikace
  • adb logcat -b events „gsm_service_state_change“ „*:S“ Získejte všechny změny stavu GSM
  • adb logcat -b radio Získejte všechny události rádia

Log Analysis
Do této chvíle jsme získali všechna základní odhalení systému logování Android. Nyní je čas analyzovat protokoly přicházející z vaší aplikace nebo od koncového uživatele. Zde můžeme analýzu logů rozdělit na dvě části

  1. Debug Log:- soubor logů přicházející ve fázi vývoje a testování
  2. Production Log:- soubor logů přicházející přímo od koncového uživatele.

Takže hádejte, který z nich je obtížný Production Right? Jaký je tedy nejlepší přístup k ladění a získání požadovaných informací ze zachycených logů? Jak jsem uvedl výše, můžeme to udělat pomocí

  • „Užitečných vzorů filtrů“ a
  • Pomocí nějakého nástroje (například LogRabit, GoogleLogTool a SonyLogTool)

Takže v posledním Android log analýza je neustálé učení a využití vašich zkušeností proces. Osobně jsem analyzoval logy prostřednictvím příslušného filtru a nástroje se svými minulými zkušenostmi.

Ale jedna věc je dobrá Každá analýza Androidu (problém/log koncového uživatele) vám dává nové učení a zkušenosti. Tak v tom pokračujte a užívejte si života kodéra a správce systému android😎😎😎

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.