Wat Logbericht bevat:-
Elk bericht in het logboek bestaat uit
- Een tag die aangeeft uit welk deel van het systeem of de toepassing het bericht afkomstig is
- Een tijdstempel (op welk tijdstip dit bericht is gekomen)
- Het berichtlogniveau (of prioriteit van de gebeurtenis die door het bericht wordt vertegenwoordigd) en
- het logbericht zelf (gedetailleerde beschrijving van fout of uitzondering of informatie enzovoort)
Wat elk logtype bevat:-
1. Toepassingslog
- gebruik android.util.Log class methods om berichten met verschillende prioriteit in het logboek te schrijven
- Java classes declareren hun tag statisch als een string, die ze doorgeven aan de logmethode
- De gebruikte logmethode geeft de “ernst” van het bericht aan (of het logniveau)
- Meldingen kunnen worden gefilterd op tag of prioriteit wanneer de logboeken worden verwerkt door ophaalprogramma’s (logcat)
2. Systeem log
- Gebruik de android.util.Slog klasse om een bericht met verschillende prioriteit te schrijven met de bijbehorende berichten
- Veel Android framework klassen maken gebruik van het systeem log om hun berichten gescheiden te houden van (mogelijk ruis) applicatie log berichten
- Een geformatteerd bericht wordt afgeleverd via de C/C++ bibliotheek naar beneden naar de kernel driver, die het bericht opslaat in de juiste buffer (systeem buffer)
3. Event log
- Event logs berichten worden gemaakt met behulp van android.util.EventLog klasse, die binaire geformatteerde logberichten creëert.
- Log items bestaan uit binaire tag codes, gevolgd door binaire parameters.
- De bericht tag codes worden opgeslagen op het systeem op: /system/etc/event-log-tags.
- Elk bericht heeft de string voor het logbericht, evenals codes die de waarden aangeven die zijn geassocieerd met (opgeslagen bij) dat item.
4. Radio log
- Gebruikt voor radio en telefoon (modem) gerelateerde informatie
- Log items bestaan uit binaire tags code en bericht voor Netwerk info
- Logging systeem routeert automatisch berichten met specifieke tags in de radio buffer
Log formaat op Android
onderstaande is gemeenschappelijk log formaat in android
tv_sec tv_nsec priority pid tid tag messageLen Message
tag: log tag
tv_sec & tv_nsec: de tijdstempel van de logberichten
pid: het proces id van waar de logberichten vandaan komen
tid: de thread id
Prioriteitswaarde is een van de volgende tekenwaarden, gerangschikt van laagste naar hoogste prioriteit:
V – Verbose (laagste prioriteit)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (hoogste prioriteit, waarop nooit iets wordt afgedrukt)
Log-File locations
Er zijn verschillende directories waar logs (inclusief die van crashes) worden opgeslagen en ze zijn niet gestandaardiseerd (d.w.z.Sommige kunnen ROM-specifiek zijn). Ik zet er hier enkele op.
- /data/anr : Dalvik schrijft hier stack traces op ANR, d.w.z. “Application Not Responding” aka “Force-Close”
- /data/dontpanic : bevat enkele crash logs inclusief traces
- /data/kernelpanics :- Slaat “kernel panic” gerelateerde logs op
- /data/tombstones :- kan meerdere tombstone_nn bestanden bevatten (nn is een getal van 0 tot 10 en na 10 nog eens herhalen)
‘Log’ command-line tool
Om logs van de android apparaten/emulator vast te leggen Hieronder staat een aantal command-line tool. In real-life projecten, zijn er log capture toepassingen/tools gebruikt om de logs vast te leggen op het gebruikersapparaat en deelde het terug naar de ontwikkelaar/beheerder voor analyse.
- adb logcat (toont alle type logs voor het huidige android systeem
- adb logcat -v threadtime (het zal datum en tijd bevatten)
- adb logcat -v threadtime > logfile.txt (Sla logs op in logfile.txt)
Gebruikbare filterpatronen
U kunt de onderstaande filter in uw adb commando gebruiken om logs te filteren. U kunt dit filter ook gebruiken om in uw logbestand te zoeken (logs die door het gebruikersapparaat zijn verstrekt).
- adb logcat -f <output_file>Alle logs in een bestand opslaan
- adb logcat “*:E “Alle fouten en fatals ophalen
- adb logcat | grep -i “foo.example.” #haal alle logs gerelateerd aan “foo.example.*” tagname
- adb logcat “application_or_tag_name:*” “*:S” Verkrijg alle logs op applicatienaam
- adb logcat -b events “gsm_service_state_change” “*:S” Verkrijg alle GSM-statuswijzigingen
- adb logcat -b radio Verkrijg alle Radio-events
Log Analysis
Tot nu toe krijgen we alle fundamentele blootstelling van het Android Logging System. Nu is het tijd om de logs te analyseren die van je applicatie of eindgebruiker komen. Hier kunnen we verdelen log analyse in twee delen
- Debug Log:- logs bestand dat tijdens de ontwikkeling en testfase
- Productie Log:- logs bestand dat rechtstreeks van de eindgebruiker.
Dus raad eens welke moeilijk is Productie een Rechts? Dus wat is de beste aanpak om te debuggen en de gewenste info uit de vastgelegde logs te krijgen? Zoals ik hierboven besproken, We kunnen het doen door gebruik te maken
- “Nuttige Filterpatronen” en
- Met behulp van enkele Tool (bijvoorbeeld LogRabit, GoogleLogTool, en SonyLogTool)
Dus in de laatste Android log analyse is continu leren en gebruik te maken van uw ervaring proces. Persoonlijk heb ik geanalyseerd logs via relevante filter en tool met mijn verleden ervaring.
Maar een ding is goed Elke android analyse (eindgebruiker probleem / bug log) geeft je nieuwe leren en ervaring. Dus blijf het doen en geniet van je leven als een coder en onderhouder van android systeem😎😎😎