Wie filtere ich logcat in Android Studio?

96

In meinem Logcat gibt es zu viel Ausgabe, daher möchte ich es mit einigen Schlüsselwörtern filtern und im Grunde nur die Ausgabe anzeigen, die die Schlüsselwörter enthält. Gibt es eine Möglichkeit, dies in Android Studio über die Benutzeroberfläche zu tun?

Alessandro Roaro
quelle
Nein, ich frage, wie die Nachrichten nach Schlüsselwörtern gefiltert werden sollen.
Alessandro Roaro
Ab Android Studio Version 0.4.5 erhalten Sie Nachrichten von der App, die nur ausgeführt wird. 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

Antworten:

107

Es gibt zwei Möglichkeiten, dies zu tun. Beide befinden sich auf der Registerkarte Android am unteren Rand der IDE (wo die Logcat-Ausgabe angezeigt wird).

Zunächst können Sie einfach etwas in das Suchfeld oben eingeben und es sollten nur Nachrichten gefiltert werden, die den von Ihnen eingegebenen Text enthalten.

Zweitens können Sie eine erweiterte Filterung durchführen, indem Sie auf das Dropdown-Menü oben rechts klicken, in dem standardmäßig keine Filter angezeigt werden sollen, und auswählenEdit Filter Configuration und angeben, nach was gefiltert werden soll. Mit dieser Methode speichern Sie auch die Filter und können sie wiederverwenden, indem Sie sie in der Dropdown-Liste auswählen.

Bildschirmfoto:
Logcat suchen und filtern

free3dom
quelle
1
Danke für deine Antwort. Ich hatte bereits den ersten ausprobiert, aber er filtert die nicht relevante Ausgabe nicht heraus. Betreff: die zweite Option, leider kann ich das Dropdown-Menü nicht sehen, welche Version verwenden Sie?
Alessandro Roaro
1
Ich verwende v0.3.5 ... habe der Antwort einen Screenshot hinzugefügt.
free3dom
1
Ich habe dies gerade beim Screenshot bemerkt. Es gibt NOCH eine andere Möglichkeit zum Filtern. Auf der linken Seite (rechts neben den Registerkarten) befindet sich ein Symbol mit grünen Pfeilen - es kann ein- und ausgeschaltet werden, um nur Logcat aus dem in der Liste ausgewählten Prozess anzuzeigen :)
free3dom
Vielen Dank, ich hatte diese Filter nicht in meiner Version (0.3.2)
Alessandro Roaro
Kein Problem! Ich nehme an, es wurde damals in v0.3.3 / 4 hinzugefügt. Android Studio wird mit jeder Version besser :)
free3dom
81

Ich klicke mit der rechten Maustaste auf eine Linie, die mir nicht gefällt, und wähle "Linien wie diese falten".Geben Sie hier die Bildbeschreibung ein

James Hackett
quelle
9
Wow großartig!! Ich wünschte, ich wüsste das früher!
miva2
7
Dies sollte die Antwort sein.
freut sich
2
Nur das löst meine Flut durch Genymotion auf Android Studio Logcat, danke.
Florida
3
Erstaunt, dass ich das noch nie bemerkt habe. Guter Fund!
dm78
1
ok habe es :-D (doppelklicken Sie einfach auf den grün gefärbten Eintrag mit dem Text: "n interne Anrufe")
Aydin K.
53

Wie @ free3dom sagte, können Sie den Prozess auswählen, von dem Sie Logcats erhalten möchten. Hier ist der Screenshot.

Bildschirmfoto

dmSherazi
quelle
2
Vielen Dank für das Hinzufügen. Es ist gut, es hier für alle zu haben und ich habe es nur in den Kommentaren erwähnt :)
free3dom
39
Schöne Grafik auch ;-)
Gerard
1
Ab Android Studio Version 0.4.5 erhalten Sie Nachrichten von der App, die nur ausgeführt wird. 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 für drei drücken Sie diese Option auf "Nur Protokolle des ausgewählten Prozesses
anzeigen
Ich habe ein anderes Problem, wenn ich Filter aus Filterkonfiguration für ein bestimmtes Paket anwende, wird logcat leer.
Bhupesh
17

Ich habe ein Video-Tutorial erstellt, um Ihnen zu zeigen, wie = https://youtu.be/xw2qE5ko_9I

Geben Sie Ihrem Protokoll einen Namen. Ich nannte meine "Wawa".

Geben Sie hier die Bildbeschreibung ein

Gehen Sie in Android Studio zu Android-> Filterkonfigurationen bearbeiten

Geben Sie hier die Bildbeschreibung ein

Geben Sie dann den Namen ein, den Sie den Protokollen gegeben haben. In meinem Fall heißt es "wawa". Hier sind einige Beispiele für die Filtertypen, die Sie ausführen können. Sie können nach System.out, System.err, Protokollen oder Paketnamen filtern:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Gen
quelle
2
Gibt es eine Regex, um dies zu negieren, um die Protokolle zu verbergen, die eine Zeile enthalten?
Hugo M. Zuleta
Nicht, dass ich davon Wüste. Wenn Sie Regex verwenden möchten, ist es meiner Meinung nach am besten, sich in das Android-Betriebssystem einzufügen und Grep auf dem Bash-Terminal zu verwenden.
Gene
^ (?! Chrom) (?! WebViewFactory) (?! Zygote) .... füge Tags wie diese hinzu, die du verstecken möchtest wie (?! TAG_NAME). Wenn Sie Regex für ein Tag verwenden möchten, z. Wenn Sie alle Tags ausblenden möchten, beginnt dies mit "asd". Anschließend fügen Sie (?! (^ asd)) zu dieser "Liste" von Tags hinzu.
Drusantia
11

Deklarieren Sie zuerst Ihre TAG-Namen in Ihrem Code, z

private static final String TAG = "MainTagName";

Fügen Sie dann Protokollanweisungen hinzu, in denen Sie etwas ausgeben möchten

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

Klicken Sie gemäß free3dom im zweiten Beitrag auf der Registerkarte logcat auf die Dropdown-Liste Filter und dann auf Filterkonfiguration bearbeiten.

In diesem Beispiel verwenden wir die Option " Protokoll-Tag" (Regex) , um Protokollnachrichten für einen der drei übereinstimmenden Tag-Namen mithilfe der Pipe | anzuzeigen Trennzeichen (ohne Leerzeichen):

MainTagName|SomeTagName|SomeOtherTagName
HostMyBus
quelle
2
Ich erhalte keine Logcat-Ausgabe, wenn ich | verwende um die beiden Tags zu trennen (Android Studio 1.2)
Jemand irgendwo
2
@SomeoneSomewhere Stellen Sie sicher, dass der Name Ihres TAG mit dem ersten Parameter in der Log-Anweisung übereinstimmt. Stellen Sie sicher, dass zwischen den Tag-Namen und der Pipe keine Leerzeichen stehen, z. B. tag1 | tag2. Stellen Sie sicher, dass Sie tatsächlich den Befehl tag ausführen, indem Sie Ihren Code debuggen. Überprüfen Sie, ob Ihre Protokollstufe in der Dropdown-Liste Protokollstufe im Logcat-Fenster auf Debug oder Verbose eingestellt ist.
HostMyBus
2
Ich habe alle möglichen Kombinationen ausprobiert. Meins ist fehlgeschlagen, weil ich meinen Filter mit Leerzeichen und dem | hatte wie "Tag1 | Tag2". Diese Antwort gefunden und Leerzeichen entfernt und es funktioniert perfekt. Vielen Dank!
Raddevus
5

Ich hatte Probleme beim Einschalten der Filter in Logcat. Um die Filter in Android Studio 3.2 anzuzeigen, müssen Sie den Floating-Modus ein- und ausschalten, damit die Filter wieder angezeigt werden.

Geben Sie hier die Bildbeschreibung ein

Live-Liebe
quelle
3

Eine Alternative, die für mich funktioniert, ist die Auswahl der Show only selected applicationOption im Filtermenü:

Geben Sie hier die Bildbeschreibung ein

Ojonugwa Jude Ochalifu
quelle
Irgendeine Idee, wann die Option "Firebase" eintraf? Ich habe es heute zum ersten Mal gesehen (nachdem ich mich ein Alter lang gefragt hatte, warum meine App nicht mehr protokolliert wurde).
Richard Le Mesurier
Ich hatte keine Ahnung, dass es überhaupt da war.
Ojonugwa Jude Ochalifu
1
Ich auch nicht, aber ich hatte es ausgewählt (ohne es zu wissen) und das verschwendete viel Zeit. Danke trotzdem
Richard Le Mesurier
2

Ich weiß nicht, ob die Bilder in der anderen Antwort alt sind oder ob mir etwas gefehlt hat, aber hier ist ein aktualisiertes Bild.

Klicken Sie unten auf die Registerkarte Android Monitor und stellen Sie sicher, dass die Registerkarte Logcat ausgewählt ist. Geben Sie dann ein, was Sie filtern möchten . Ich habe meine mit meinem Tag-Namen gefiltert TAG.

Geben Sie hier die Bildbeschreibung ein

Suragch
quelle
2

Nur um meinen eigenen Fehler hinzuzufügen:

Stellen Sie sicher, dass Sie bei Verwendung des Emulators und eines realen Geräts in der Dropdown-Liste links über der Registerkarte logcat debuggen, um zu dem Gerät zu wechseln, das Sie debuggen.

Asimov
quelle
1

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

Erstellen Sie einfach einen LogCat-Filter und fügen Sie unter String einen Eintrag in "LogTag" ein, der dann die Systemzeilen ignoriert

^(?!.*(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))
Josef Vancura
quelle