Android Analiza logów

Android logi podpis

Jako deweloper Android, wszyscy wiecie Analiza logów jest etapem rozwoju i spotykamy go od czasu do czasu.
Ale analiza logów jest głównym wyzwaniem dla opiekuna kodu lub inżyniera wsparcia.

Odkąd jakikolwiek produkt Android uruchomiony na rynku i klienci zaczynają go używać. Wtedy prawdziwe błędy scenariuszowe / problemy zaczynają przychodzić i to jest główne zadanie dla inżyniera wsparcia / inżyniera utrzymania projektu, aby przeanalizować błąd / problem z dostarczonym zestawem logów.

Początkowo zaczynamy od rodzaju Logu dostępnego na Android Eco-system:-

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

Android system logowania składa się z:

  • sterownika jądra i buforów jądra do przechowywania komunikatów dziennika
  • klas C, C++ i Java do tworzenia wpisów dziennika i dostępu do komunikatów dziennika.
  • Logcat (samodzielny program do przeglądania komunikatów dziennika),
  • DDMS (możliwość przeglądania i filtrowania komunikatów dziennika z maszyny głównej)

Android Log Buffer/container

  • main – główny dziennik aplikacji
  • events – dla informacji o zdarzeniach systemowych
  • radio – dla informacji związanych z radiem i telefonem
  • radio – dla informacji związanych z radiem i telefonemrelated information
  • system – dziennik dla niskopoziomowych komunikatów systemowych i debugowania

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

  1. Debug Log:- plik logów przychodzących podczas fazy rozwoju i testowania
  2. 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😎😎😎

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.