Filtruj dane wyjściowe w logcat według zmiennej

151

Próbuję filtrować dane wyjściowe logcata z prawdziwego urządzenia (nie emulatora) według nazwy tagu, ale otrzymuję wszystkie wiadomości, które są dość spamem. Chcę tylko czytać wiadomości z przeglądarki, która powinna być czymś w rodzaju „browser: ” lub „webkit: ”, ale to nie działa ... Oto co otrzymuję:

rzeczywista wydajność

chrupać
źródło

Odpowiedzi:

294

Użyj tego:

adb logcat -s "TAGNAME"
sat
źródło
7
Dziękuję Ci! Powyższe jest odpowiednikiem zmiennej adb logcat *: s
munch
3
Jak mogę odfiltrować <tagname>?
Arunabh Das
Uważam, że jedynym sposobem na odfiltrowanie jest poziom. Na przykład, jeśli niektóre aplikacja jest spamowanie Debug następnie ustawić poziom logcat aby tylko pokazać Informacje i wyższych poziomach: logcat *: I
ktoś gdzieś
1
Czy można użyć powyższego z -f nazwa pliku? Powiedzmy, moim scenariuszem jest filtrowanie dzienników według TagName i zrzucanie ich do pliku tekstowego.
Zielony goblin
9
Das - "adb logcat TAGNAME: s" wyciszy zaszumiony tag.
Don Park
56

Jeśli ktoś natknie się na to, tak jak ja, możesz filtrować wiele tagów, dodając przecinek między nimi, na przykład:

adb logcat -s "browser","webkit"
aarislarsen
źródło
Wyjaśnij, gdzie mam umieścić ten kod. Jestem nową pszczołą. Proszę wyjaśnić
Zar E Ahmer
1
@Nepster Wpisz to w terminalu.
async
Jeśli używasz cygwin w systemie Windows, możesz użyć grep ... i tak, to działa.
sgupta
12

Inną opcją jest ustawienie poziomów dziennika dla określonych tagów:

adb logcat SensorService: S PowerManagerService: S NfcService: S power: I Czujniki: E

Jeśli chcesz tylko ustawić poziomy logowania dla niektórych tagów, możesz to zrobić na podstawie tagu po tagu.

mkobit
źródło
9

Nie polegaj na powłoce ADB, po prostu potraktuj ją (logcat adb) jako normalne wyjście Linuksa, a następnie przepuść:

$ adb shell logcat | grep YouTag
# just like: 
$ ps -ef | grep your_proc 
Siwei Shen 申思维
źródło
5
To zły wybór, ponieważ wysyłanych jest dużo niepotrzebnego ruchu, a filtr oczywiście nie zadziała. Jeśli niepowiązany proces zarejestruje komunikat, który zawiera jakiś ciąg, pojawi się.
John Smith
and the filter obviously won't work, czy próbowałeś? Mam i wkleiłem odpowiedź zgodnie z wynikiem.
Siwei Shen 申思维
1
Pytanie dotyczyło okien, gdzie grep nie jest dostępny
sroskelley
1
Jeśli używasz cygwin w systemie Windows, możesz użyć grep ... i tak, to działa.
sgupta
6

Oto jak tworzę tag:

private static final String TAG = SomeActivity.class.getSimpleName();
 Log.d(TAG, "some description");

Możesz użyć getCannonicalName

Tutaj mam następujące filtry TAG:

  • dowolny (*) widok - VERBOSE
  • dowolna (*) aktywność - VERBOSE
  • dowolny tag zaczynający się od Xyz (*) - ERROR
  • System.out - CICHY (ponieważ używam Zaloguj się we własnym kodzie)

Oto co wpisuję w terminalu:

$  adb logcat *View:V *Activity:V Xyz*:E System.out:S
user3566154
źródło