Zauważyłem, że kiedy używam Logcat z Eclipse z ADT na Androida, otrzymuję również wiadomości z wielu innych aplikacji. Czy istnieje sposób na filtrowanie tego i wyświetlanie tylko wiadomości z mojej własnej aplikacji.
android
android-logcat
Vinod
źródło
źródło
Odpowiedzi:
Gwarantujemy, że nazwy pakietów są unikalne, więc można użyć
Log
funkcji z tagiem jako nazwą pakietu, a następnie filtrować według nazwy pakietu :UWAGA: Od wersji Build Tools 21.0.3 nie będzie to już działać, ponieważ TAGI są ograniczone do 23 znaków lub mniej.
Log.<log level>("<your package name>", "message");
adb -d logcat <your package name>:<log level> *:S
-d
oznacza rzeczywiste urządzenie i-e
oznacza emulator. Jeśli działa więcej niż jeden emulator, możesz użyć-s emulator-<emulator number>
(np.-s emulator-5558
)Przykład:
adb -d logcat com.example.example:I *:S
Lub jeśli używasz
System.out.print
do wysyłania wiadomości do dziennika, możesz użyćadb -d logcat System.out:I *:S
do wyświetlenia tylko połączeń z System.out.Możesz znaleźć wszystkie poziomy dziennika i więcej informacji tutaj: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
EDYCJA: Wygląda na to, że lekko podskoczyłem z pistoletu i właśnie zdałem sobie sprawę, że pytasz o logcat w Eclipse. To, co napisałem powyżej, dotyczy używania logcata przez adb z wiersza poleceń. Nie jestem pewien, czy te same filtry przenoszą się do Eclipse.
źródło
logcat <your package name>:<log level>
odpowiedzi sugeruje, że można użyć nazwy pakietu jako prawidłowego filtra. Musiałem przeczytać odpowiedź dwa razy, aby zrozumieć, co ona właściwie mówi, dlatego polecam po prostu zmienić pierwszy wiersz na coś w rodzaju „logcat <tag>:<log level>
gdzie<tag>
może być nazwa twojego pakietu, jeśli użyłeś go również jako taguandroid.util.Log
”Linux i OS X
Użyj ps / grep / cut, aby pobrać PID, a następnie grep dla wpisów logcat z tym PID. Oto polecenie, którego używam:
(Możesz ulepszyć wyrażenie regularne, aby uniknąć teoretycznego problemu niepowiązanych linii logów zawierających ten sam numer, ale nigdy nie było to dla mnie problemem)
Działa to również podczas dopasowywania wielu procesów.
Windows
W systemie Windows możesz wykonać:
źródło
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Od Androida 7.0 logcat ma opcję --pid filter, a dostępna jest komenda pidof, zamień com.example.app na nazwę pakietu.
(terminal Ubuntu / od Androida 7.0)
lub
Aby uzyskać więcej informacji o poleceniu pidof:
https://stackoverflow.com/a/15622698/7651532
źródło
grep
ifindstr
, ale filtrują one tylko dzienniki z pewną wartością, z wyłączeniem wielu wiadomości. Twoja odpowiedź jest prawdziwa, pokaż wszystkie dzienniki dotyczące aplikacji bez wykluczania wiadomości dziennika z innych bibliotek. To tak, jakby obecny filtr „Pokaż tylko wybrane” w Android Studio. Dzięki!Dodaj filtr
Podaj nazwy
Wybierz swój filtr.
źródło
Dla mnie to działa w
Terminal
systemie mac. Dotarłem do folderu, w którym
adb
następnie wpisz poniżej polecenie w terminaluTutaj filtruje wszystkie logi
MyTAG
iAndroidRuntime
źródło
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) DEBUGUJ logowanie do Androida$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) teraz pokaże pełny MyTAG i błędy AndroidRuntimeAktualizacja 17 maja
Minęło kilka lat i wszystko się zmieniło. Eclipse nie jest już oficjalnie wspierany. Oto dwa kolejne aktualne podejścia:
1. Android Studio
W
Android monitor
przyborniku możesz filtrować logcat wedługdebuggable process
. Zwykle po opracowaniu aplikacji jest to proces do debugowania. Co jakiś czas mam problemy z tym i wykonaj następujące czynności:Tools
->Android
->Enable ADB Integration
.Jeśli było już włączone, wyłącz je, a następnie włącz ponownie
Odłącz i ponownie podłącz urządzenie mobilne.
Istnieją również opcje filtrowania według wyrażenia regularnego i poziomu debugowania
2. kolor logcat
Jest to ładne opakowanie Pythona,
adb logcat
jeśli chcesz użyć rozwiązania opartego na terminalu. Dobrą rzeczą jest to, że można zapisać wiele konfiguracji i po prostu ich ponownie użyć. Filtrowanie wedługtags
jest dość niezawodne. Możesz również filtrować według,package
aby zobaczyć dzienniki tylko jednej lub więcej aplikacji, ale zaczynaszlogcat-color
bezpośrednio przed uruchomieniem aplikacji.Stara odpowiedź:
Wygląda na to, że nie mogę komentować poprzednich odpowiedzi, więc opublikuję nową. To jest komentarz do odpowiedzi Toma Mulcahy , który pokazuje, jak polecenie powinno się zmienić, aby działało na większości urządzeń, ponieważ
adb shell ps
kolumna PID jest zmienna.UWAGA: Poniższe polecenie działa w przypadkach, w których podłączono wiele urządzeń. Więc
device id
jest potrzebne. W przeciwnym razie możesz po prostu pominąć nawiasy kwadratowe „[”, „]”1. Aby znaleźć kolumnę pid, wpisz:
Teraz zapamiętaj numer kolumny dla PID. Numeracja zaczyna się od
1
.2. Następnie wpisz następujące polecenie:
Po prostu wstaw kolumnę, którą zapamiętałeś
PUT_COLUMN_HERE
, np$5
Zastrzeżenie
Za każdym razem, gdy ponownie uruchamiasz aplikację, musisz ponownie uruchomić drugie polecenie, ponieważ aplikacja otrzymuje nowy PID z systemu operacyjnego.
źródło
Działa to dla mnie w git bash:
źródło
umieść to na applog.sh
następnie:
applog.sh com.example.my.package
źródło
log.d("TAG", "multine\nlog")
na przykład):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- Pominąłem, zakładamtr
, że jest to potrzebne w systemach Windows, i owinąłemAPPID
nawiasy, aby umożliwić wiele pid (oddzielone przez|
) .Działa to dla mnie z debugowaniem USB:
Podłącz urządzenie i użyj:
adb shell
Użyj logcat po podłączeniu:
logcat | grep com.yourapp.packagename
źródło
Jeśli korzystasz z Android Studio , możesz wybrać proces, z którego chcesz otrzymywać logcaty. Oto zrzut ekranu.
źródło
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
Napisałem skrypt powłoki do filtrowania logcat według nazwy pakietu, który moim zdaniem jest bardziej niezawodny niż używanie
Używa / proc / $ pid / cmdline, aby znaleźć rzeczywisty pid, a następnie wykonać grep na logcat
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
źródło
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` Z kolorem i ciągłym logiem aplikacji
źródło
adb shell pidof ...
Bit nie działa dla mnie, więcadb shell
ed do urządzenia i pobiegłtop
kopiowane PID dla mojego app tam i wtedy wymienić go w swoim poleceńpgrep
zamiastADT v15 dla Eclipse pozwala określić nazwę aplikacji (która jest faktycznie wartością pakietu w pliku androidmanifest.xml).
Uwielbiam móc filtrować według aplikacji, ale nowy logcat ma błąd w autoprzewijaniu. Gdy przewiniesz trochę w górę, aby zobaczyć poprzednie dzienniki, automatycznie przewinie się z powrotem na dół w ciągu kilku sekund. Wygląda na to, że przewijanie 1/2 w górę dziennika nie pozwala mu przeskoczyć z powrotem na dół, ale często jest to bezużyteczne.
EDYCJA: Próbowałem określić filtr aplikacji z wiersza poleceń - ale bez powodzenia. Jeśli ktoś to wymyśli LUB LUB, jak zatrzymać automatyczne przewijanie, daj mi znać.
źródło
Za pomocą wiersza polecenia systemu Windows:
adb logcat -d | findstr <package>
.* Po raz pierwszy wspomniał o tym jj_ , ale zajęło mi wieki znalezienie go w komentarzach ...
źródło
Jako wariant możesz użyć zewnętrznego skryptu PID Cat autorstwa Jake'a Whartona. Ten skrypt ma dwie główne zalety:
Z dokumentacji:
Wygląda jak
źródło
Nie jestem pewien, czy istnieje sposób, aby wyświetlać tylko komunikaty systemowe dotyczące Twojej aplikacji, ale możesz filtrować na podstawie ciągu. Jeśli robisz dziennik w programie, możesz po prostu dołączyć określone unikalne słowo kluczowe i filtrować na podstawie tego słowa.
źródło
Wypróbuj: Okno -> Preferencje -> Android -> LogCat. Zmień pole „Pokaż widok logcat, jeśli ...” wartość „VERBOSE”. Pomogło mi to.
źródło
Jeśli używasz Eclipse , naciśnij zielony + znak w oknie logCat poniżej i wpisz nazwę pakietu (com.example.yourappname) w polu Nazwa aplikacji . Wybierz dowolną wygodną nazwę w polu Nazwa filtru i kliknij OK. Zobaczysz tylko wiadomości związane z aplikacją, gdy właśnie dodany filtr zostanie wybrany z lewego panelu w logCat.
źródło
Nadaj dziennikowi nazwę. Nazwałem mój „wawa”.
W Android Studio przejdź do Android-> Edytuj konfiguracje filtrów
Następnie wpisz nazwę, którą nadałeś dziennikom. W moim przypadku nazywa się to „wawa”. Oto kilka przykładów rodzajów filtrów, które możesz zrobić. Możesz filtrować według System.out, System.err, Logs lub nazw pakietów:
źródło
Jest to prawdopodobnie najprostsze rozwiązanie.
Oprócz rozwiązania od Toma Mulcahy, możesz dodatkowo uprościć to, jak poniżej:
Użycie jest proste jak zwykły alias. Po prostu wpisz polecenie w swojej powłoce:
Konfiguracja aliasu sprawia, że jest to przydatne. Wyrażenie regularne sprawia, że jest on odporny na aplikacje wieloprocesowe, zakładając, że dbasz tylko o główny proces.
Ponieważ możesz ustawić więcej aliasów dla każdego procesu, jak chcesz. Lub skorzystaj z rozwiązania hegazy'ego. :)
Ponadto, jeśli chcesz ustawić poziomy rejestrowania, jest to możliwe
źródło
W systemie Windows 10, używając Ionic, działało mi świetnie, łącząc „findstr” z „INFO: CONSOLE” generowanym przez wszystkie komunikaty aplikacji. Zatem moje polecenie w wierszu polecenia to:
źródło
Próbowałem użyć odpowiedzi Toma Mulcahy, ale niestety nie działała ona w aplikacjach z wieloma procesami, więc edytuję ją zgodnie z moimi potrzebami.
źródło
Użyj
-s
!Źródło
źródło
Oprócz odpowiedzi Toma Mulcahy , jeśli chcesz filtrować według PID na konsoli Windows, możesz utworzyć mały plik wsadowy w ten sposób:
źródło
Jest to oczywiście pytanie mające na celu użycie Logcat spoza urządzenia programisty, jednak jeśli chcesz wyświetlić dane wyjściowe Logcat na urządzeniu (programowo), potrzebujesz tego:
The
*:D
końcu filtruje każdą wiadomość poniżej poziomu dziennika debugowania, ale możesz to pominąć.Aby skierować wyjście do, powiedzmy, TextView, zobacz na przykład tutaj .
źródło
Teraz można wpisać tag: nameofthetag lub app: nameoftheapp, aby filtrować bez dodawania nowych filtrów do paska zapisanych filtrów
źródło
W intelliJ (i prawdopodobnie również w zaćmieniu) możesz filtrować dane wyjściowe logcat według tekstu webview , więc drukuje w zasadzie wszystko, co produkuje phonegap
źródło
Kolejny wariant Gavriel
applog.sh
z obsługą kilku urządzeń i aplikacji z wieloma procesami:Stosowanie:
applog.sh com.example.my.package [-s <specific device>]
źródło
W systemie Linux działało to dla mnie:
źródło