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
- Debug Log:- soubor logů přicházející ve fázi vývoje a testování
- 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😎😎😎
.