Jak filtrować logcat w Android Studio?


99

W moim logcat jest za dużo danych wyjściowych, więc chciałbym je przefiltrować za pomocą niektórych słów kluczowych, w zasadzie wyświetlając tylko dane wyjściowe zawierające słowa kluczowe. Czy istnieje sposób, aby to zrobić w Android Studio za pośrednictwem interfejsu użytkownika?



nie, pytam, jak filtrować wiadomości według słów kluczowych.
Alessandro Roaro

od wersji 0.4.5 Android Studio będziesz otrzymywać wiadomości tylko z uruchomionej aplikacji. Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
dmSherazi

Odpowiedzi:


109

Można to zrobić na dwa sposoby, oba znajdują się na karcie Android u dołu środowiska IDE (gdzie wyświetlane są dane wyjściowe logcat).

Po pierwsze, możesz po prostu wpisać coś w polu wyszukiwania u góry i powinno ono filtrować tylko wiadomości zawierające wpisany tekst.

Po drugie, możesz wykonać zaawansowane filtrowanie, klikając listę rozwijaną w prawym górnym rogu, która powinna domyślnie wyświetlać Brak filtrów , a następnie wybierz Edit Filter Configurationi określ, według czego filtrować. Korzystając z tej metody, można również zapisać filtry i użyć ich ponownie, wybierając je z listy rozwijanej.

Zrzut ekranu:
Wyszukaj i filtruj Logcat


1
Dzięki za odpowiedź. Wypróbowałem już pierwszą, ale nie odfiltrowuje nieistotnych danych wyjściowych. Odp: druga opcja, niestety nie widzę menu rozwijanego, jakiej wersji używasz?
Alessandro Roaro

1
Używam wersji 0.3.5 ... do odpowiedzi dodałem zrzut ekranu.
free3dom

1
Właśnie zauważyłem to podczas robienia zrzutu ekranu, jest JESZCZE inny sposób filtrowania. Po lewej stronie (po prawej stronie zakładek) znajduje się ikona z zielonymi strzałkami - można ją włączyć / wyłączyć, aby wyświetlić tylko logcat z procesu wybranego na liście :)
free3dom

Dziękuję, nie miałem tych filtrów w mojej wersji (0.3.2)
Alessandro Roaro

Nie ma problemu! Przypuszczam, że został dodany w wersji 0.3.3 / 4. Android Studio jest coraz lepsze z każdą wersją :)
free3dom

86

Po prostu klikam prawym przyciskiem myszy linię, której nie lubię i wybieram opcję „Zwiń linie w ten sposób”wprowadź opis obrazu tutaj


10
Wow świetne!! Chciałbym wiedzieć to wcześniej!
miva2

8
To powinna być odpowiedź.
gladował

2
Tylko to rozwiązuje moją powódź przez genymotion na logcat Android Studio, dzięki.
Floryda

3
Zdziwiony, że nigdy wcześniej tego nie zauważyłem. Dobre znalezisko!
dm78

1
ok rozumiem :-D (wystarczy dwukrotnie kliknąć zielony wpis z tekstem: „n połączeń wewnętrznych”)
Aydin K.

53

Jak powiedział @ free3dom, możesz wybrać proces, z którego chcesz otrzymywać logcats. Oto zrzut ekranu.

Zrzut ekranu


2
Dzięki za dodanie tego. Dobrze jest mieć to tutaj dla wszystkich i wspomniałem o tym tylko w komentarzach :)
free3dom

39
Ładna grafika też ;-)
Gerard

1
od wersji 0.4.5 android studio u będzie otrzymywać wiadomości tylko z uruchomionej aplikacji. Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
dmSherazi

1
+1 dla thre wciśnij to na „Pokaż tylko logi z wybranego procesu”
lujop

Mam inny problem, kiedy stosuję filtr z konfiguracji filtra, dla konkretnego pakietu logcat staje się pusty.
Bhupesh,

19

ZROBIŁEM TUTORIAL WIDEO, ABY POKAZAĆ CI, JAK = https://youtu.be/xw2qE5ko_9I

Nadaj swojemu dziennikowi nazwę. Nazwałem swoje „wawa”.

wprowadź opis obrazu tutaj

W Android Studio przejdź do Android-> Edit Filter Configurations

wprowadź opis obrazu tutaj

Następnie wpisz nazwę, którą nadałeś dziennikom. W moim przypadku nazywa się to „wawa”. Oto kilka przykładów typów filtrów, które możesz zastosować. Możesz filtrować według System.out, System.err, Logs lub nazw pakietów:

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj


2
Czy istnieje wyrażenie regularne, które to neguje, aby ukryć dzienniki zawierające wiersz?
Hugo M. Zuleta

Nie żebym o tym wiedział. Jeśli chcesz użyć wyrażenia regularnego, myślę, że najlepszym sposobem jest adbowanie się do systemu operacyjnego Android i używanie Grepa w terminalu Bash.
Gene

^ (?! chromium) (?! WebViewFactory) (?! zygote) .... dodaj tagi podobne do tych, które chcesz ukryć, np. (?! TAG_NAME). Jeśli chcesz użyć wyrażenia regularnego dla tagu, np. chcesz ukryć wszystkie tagi zaczynające się od „asd”, a następnie dodajesz (?! (^ asd)) do tej „listy” tagów.
Drusantia

11

Najpierw zadeklaruj nazwy TAGów w swoim kodzie, np

private static final String TAG = "MainTagName";

Następnie dodaj instrukcje dziennika, w których chcesz coś wypisać

Log.d(TAG, "Activity created");

Zgodnie z free3dom w drugim poście, na karcie logcat kliknij listę rozwijaną Filters, a następnie Edit Filter Configuration.

W tym przykładzie używamy opcji Log Tag (regex) do wyświetlania komunikatów dziennika dla dowolnej z trzech pasujących nazw znaczników za pomocą potoku | separator (bez spacji):

MainTagName|SomeTagName|SomeOtherTagName

2
Nie otrzymuję żadnych danych wyjściowych Logcat podczas korzystania z | aby oddzielić dwa tagi (Android Studio 1.2)
Someone Somewhere

2
@SomeoneSomewhere Upewnij się, że nazwa TAG-a jest zgodna z pierwszym parametrem w instrukcji Log. Upewnij się, że między nazwami znaczników a potokiem nie ma spacji, np. Tag1 | tag2. Upewnij się, że faktycznie klikasz polecenie tag, debugując swój kod. Sprawdź, czy poziom dziennika jest ustawiony na Debugowanie lub Pełne na liście rozwijanej Poziom dziennika w oknie logcat.
HostMyBus

2
Próbowałem różnych kombinacji. Mój nie powiódł się, ponieważ miałem filtr ze spacjami i | np. „Tag1 | Tag2”. Znalazłem tę odpowiedź i usunięto spacje i działa idealnie. Dzięki!
raddevus

6

Miałem problem z włączeniem filtrów w Logcat. Aby zobaczyć filtry w Android Studio 3.2, musisz ponownie włączyć i wyłączyć „Tryb pływający”, aby filtry pojawiły się ponownie.

wprowadź opis obrazu tutaj


3

Jedną z alternatyw, która działa dla mnie, jest wybranie Show only selected applicationopcji w menu filtru:

wprowadź opis obrazu tutaj


Masz jakiś pomysł, kiedy pojawiła się opcja „Firebase”? Widziałem to dzisiaj po raz pierwszy (po spędzeniu wieku na zastanawianiu się, dlaczego moja aplikacja już się nie loguje).
Richard Le Mesurier

Nie miałem pojęcia, że ​​nawet tam jest.
Ojonugwa Jude Ochalifu

1
Ja też nie, ale wybrałem to (nie wiedząc) i zmarnowałem dużo czasu. Dzięki tak czy inaczej
Richard Le Mesurier

2

Nie wiem, czy obrazy w drugiej odpowiedzi są stare, czy czegoś mi brakowało, ale tutaj jest zaktualizowany obraz.

Kliknij kartę Android Monitor u dołu i upewnij się, że wybrana jest karta logcat . Następnie wpisz cokolwiek chcesz filtrować wyjście. Odfiltrowałem mój za pomocą mojej nazwy tagu TAG.

wprowadź opis obrazu tutaj


2

Żeby dodać mój błąd:

upewnij się, że gdy używasz emulatora i prawdziwego urządzenia, aby przełączyć się na urządzenie, które debugujesz, w menu rozwijanym po lewej stronie nad kartą logcat.


1

Zobacz https://medium.com/zinuzoid/if-you-developing-android-application-1bdff0a96205

po prostu utwórz filtr LogCat i wstaw poniżej String do "LogTag", który zignoruje linie systemowe

^(?!.*(BtGatt|dalvik|Environment|DataRouter|FA|art|Wifi|ServiceManager|Atfwd|tnet|MDnsDS|Download|Bluetooth|slim|QSEECOMAPI|WVCdm|QC-time|sensors|nanohub|Drm|Babel|Dropbox|gsamlab|Cryptd|Vold|QC_|Conscrypt|Dns|sound|NetWork|OpenGL|TLog|GMPM|Microphone|Process|Dynamite|cr_|VideoCapabilities|libEGL))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.