Co zawiera komunikat Log:-
Każdy komunikat w dzienniku składa się z
- znacznika wskazującego część systemu lub aplikacji, z której pochodzi komunikat
- znacznika czasu (o której godzinie pojawił się ten komunikat)
- poziomu dziennika komunikatu (lub priorytetu), w którym znajduje się ten komunikat. poziom dziennika komunikatu (lub priorytet zdarzenia reprezentowanego przez komunikat) oraz
- sam komunikat dziennika (szczegółowy opis błędu lub wyjątku lub informacji itp.)
Co zawiera każdy typ dziennika:-
1. Dziennik aplikacji
- używaj metod klasy android.util.Log do zapisywania wiadomości o różnym priorytecie w dzienniku
- Klasy Java deklarują swój znacznik statycznie jako ciąg znaków, który przekazują do metody log
- Użyta metoda log wskazuje „dotkliwość” wiadomości (lub poziom dziennika)
- Wiadomości mogą być filtrowane według znacznika lub priorytetu, gdy dzienniki są przetwarzane przez narzędzia do pobierania (logcat)
2. Log systemowy
- Użyj klasy android.util.Slog, aby napisać wiadomość o różnym priorytecie z powiązanymi wiadomościami
- Wiele klas systemu Android wykorzystuje dziennik systemowy, aby utrzymać swoje wiadomości oddzielone od (ewentualnie hałaśliwych) wiadomości dziennika aplikacji
- Sformatowana wiadomość jest dostarczana przez bibliotekę C/C++ do sterownika jądra, który przechowuje wiadomość w odpowiednim buforze (bufor systemowy)
3. Dziennik zdarzeń
- Wiadomości dziennika zdarzeń są tworzone przy użyciu klasy android.util.EventLog, która tworzy binarnie sformatowane wiadomości dziennika.
- Wpisy dziennika składają się z binarnych kodów znaczników, po których następują binarne parametry.
- Kody znaczników wiadomości są przechowywane w systemie pod adresem: /system/etc/event-log-tags.
- Każdy komunikat ma łańcuch dla komunikatu dziennika, a także kody wskazujące wartości związane z (przechowywane z) tym wpisem.
4. Dziennik radiowy
- Używany dla radia i telefonu (modemu) związanych z informacjami
- Wpisy dziennika składają się z binarnych tagów kodu i wiadomości dla informacji sieciowych
- System logowania automatycznie kieruje wiadomości z określonymi tagami do bufora radia
Format dziennika na Androida
poniżej jest wspólny format dziennika w androidzie
tv_sec tv_nsec priority pid tid tag messageLen Message
tag: tag logu
tv_sec & tv_nsec: znacznik czasu komunikatów logu
pid: id procesu skąd pochodzą komunikaty logu
tid: id wątku
Wartość priorytetu jest jedną z następujących wartości znakowych, uporządkowanych od najniższego do najwyższego priorytetu:
V – Verbose (najniższy priorytet)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (najwyższy priorytet, na którym nigdy nic nie jest drukowane)
Lokalizacje plików logów
Istnieje kilka katalogów, w których przechowywane są logi (w tym te z awarii) i nie są one ustandaryzowane(i.tzn. niektóre mogą być specyficzne dla ROM). Zamieszczam kilka wspólnych tutaj.
- /data/anr : Dalvik zapisuje tutaj ślady stosu na ANR, tj. „Application Not Responding” aka „Force-Close”
- /data/dontpanic : zawiera kilka logów awarii w tym ślady
- /data/kernelpanics :- Przechowuje logi związane z „kernel panic”
- /data/tombstones :- może pomieścić kilka plików tombstone_nn (nn jest liczbą od 0 do 10 i po 10 ponownie ją powtarza)
’Log’ narzędzie wiersza poleceń
Do przechwytywania logów z urządzeń android/emulatora Poniżej znajduje się pewne narzędzie wiersza poleceń. W rzeczywistych projektach, istnieją aplikacje/narzędzia do przechwytywania logów używane do przechwytywania logów na urządzeniu użytkownika i udostępniania go z powrotem do programisty/konserwatora do analizy.
- adb logcat (pokazuje wszystkie logi typu dla bieżącego systemu android
- adb logcat -v threadtime (będzie zawierać datę i czas)
- adb logcat -v threadtime > logfile.txt (Przechowuj logi w logfile.txt)
Użyteczne wzorce filtrów
Możesz użyć poniższego filtra w poleceniu adb do filtrowania logów. Możesz także użyć tego filtra do przeszukiwania pliku logów (logów dostarczonych przez urządzenie użytkownika).
- adb logcat -f <output_file>Zapisz wszystkie logi do pliku
- adb logcat „*:E” Pobierz wszystkie błędy i fatale
- adb logcat | grep -i „foo.example.” #get all logs related to „foo.example.*” tagname
- adb logcat „application_or_tag_name:*” „*:S” Pobierz wszystkie logi według nazwy aplikacji
- adb logcat -b events „gsm_service_state_change” „*:S” Pobierz wszystkie zmiany stanu GSM
- adb logcat -b radio Pobierz wszystkie zdarzenia Radia
Analiza logów
Do tej pory dostaliśmy wszystkie podstawowe odsłonięcie systemu logowania Androida. Teraz czas na analizę logów pochodzących z twojej aplikacji lub użytkownika końcowego. Tutaj możemy podzielić analizę logów na dwie części
- Debug Log:- plik logów przychodzących podczas fazy rozwoju i testowania
- Production Log:- plik logów przychodzących bezpośrednio od użytkownika końcowego.
Więc zgadnij, który z nich jest trudny Production one Right? Więc jakie jest najlepsze podejście do debugowania i uzyskania pożądanych informacji z przechwyconych logów? Jak omówiłem powyżej, Możemy to zrobić za pomocą
- „Przydatne wzorce filtrów” i
- Przez użycie niektórych narzędzi (przykład LogRabit, GoogleLogTool, i SonyLogTool)
Więc w ostatniej analizie logów Androida jest ciągłe uczenie się i wykorzystywanie swojego doświadczenia procesu. Osobiście analizowałem logi przez odpowiedni filtr i narzędzie z mojego doświadczenia z przeszłości.
Ale jedna rzecz jest dobra Każda analiza android (problem użytkownika końcowego / log błędów) daje nową naukę i doświadczenie. Więc zachować to robi i cieszyć się życiem jako koder i konserwator systemu android😎😎😎
.