So filtern Sie einen Tagnamen in Eclipse LogCat Viewer heraus


75

Ich habe eine Android-Anwendung, die das LogCat "spammt", und ich möchte seine Logcat-Einträge entfernen, um eine besser lesbare Ausgabe zu erhalten.

Ist es möglich, einen Filter zu haben, der die LogCat-Einträge für einen bestimmten Tag-Namen entfernt? Oder ein Suchmuster, das den Trick macht?


@pankaj Es ist nicht genau das, was ich will. Ich möchte eine Möglichkeit finden, bestimmte Einträge zu entfernen, anstatt sie zu isolieren.
Jleuleu

Antworten:


183

Ja. Erstellen Sie einen Filter, in dem sich das Feld "Nach Protokoll-Tag" befindet

^(?!.*(MYTAG)).*$

Wo MYTAGist das Tag, das Sie nicht sehen möchten? Ich bin kein Regexp-Experte (ein "Regexpert"? ;-)), daher gibt es möglicherweise einen einfacheren Weg, diese Negation durchzuführen, aber ich habe es einfach versucht und es funktioniert.

Sie können mit dem Filter im Feld direkt über dem Log Cat-Nachrichtenbereich herumspielen, indem Sie dort Filterzeichenfolgen wie folgt eingeben:

tag:^(?!.*(DeskClock|dalvik|wpa)).*$

Hier werden alle Nachrichten außer den Tags "DeskClock", "dalvik" und "wpa" angezeigt.


Sie können diesen regulären Ausdruck auch zur Suchleiste über der Liste in der Eclipse LogCat-Ansicht hinzufügen. Vielen Dank!
SMBiggs

Vielen Dank. Ich hatte immer Probleme beim Erstellen von regulären Ausdrücken, bei denen nur die nicht übereinstimmende Ausgabe angezeigt wird. Sehr hilfreich. DDMS ist jetzt tatsächlich nützlich.
Chris

Vielen Dank. Dies ist so nützlich, wusste nicht, dass ich hier reguläre Ausdrücke verwenden könnte.
Charlie-Blake

Kann jemand bitte erklären, wie dieser Ausdruck genau funktioniert?
Preis

1
Sie können so viele Tags in diesen Ausdruck einfügen, wie Sie möchten, indem Sie ihn in die folgende Form ändern:^(?!.*(tag1|tag2|tag3|...|tagn)).*$
Reuben Tanner

9

Dies scheint für die Frage nicht direkt relevant zu sein, aber hier ist ein regulärer Ausdruck, der die meisten vom System generierten Protokolle herausfiltert, wenn Sie dies in Ihren Tag-Filter einfügen, wie von Rob beschrieben .

^(?!(WifiMulticast|WifiHW|MtpService|PushClient|InputMethodManager|Provider|SurfaceTextureClient|ImageLoader|dalvikvm|OpenGLRenderer|skia|AbsListView|MediaPlayer|AudioManager|VelocityTracker|Drv|Jpeg|CdpDrv|IspDrv|TpipeDrv|iio|ImgScaler|IMG_MMU|ResMgrDrv|JpgDecComp|JpgDecPipe|mHalJpgDec|PipeMgrDrv|mHalJpgParser|jdwp|libEGL|Zygote|Trace|InputEventReceiver|SpannableStringBuilder|IInputConnectionWrapper|MotionRecognitionManager|Choreographer|v_galz|SensorManager|Sensors|GC|LockPatternUtils|SignalStrength|STATUSBAR-BatteryController|BatteryService|STATUSBAR-PhoneStatusBar|WifiP2pStateTracker|Watchdog|AlarmManager|BatteryStatsImpl|STATUSBAR-Clock))

Ich aktualisiere diese Liste von Tags ständig, wenn sie auf verschiedenen Geräten getestet werden. Die Liste ist nicht vollständig und Sie können zu dieser Antwort beitragen. Ich bin sicher, dass dies für viele eine Stunde sparen wird.

Wenn andere Protokolle herausgefiltert werden müssen, hängen Sie sie mit einem '| an diese Regex an 'Charakter.


8

Hängt davon ab, wie Sie Ihren Logcat anzeigen.

Wenn Sie die GUI-Logcat-Oberfläche verwenden, erstellen Sie am besten einen Filter für die Tags, die Sie anzeigen möchten. Diese werden in eine separate Kategorie eingeordnet. Obwohl sich die Benutzeroberfläche ein wenig geändert hat, können Sie diese alte Antwort von mir verwenden . Sollte klar sein, wie dies verwendet wird (stellen Sie sicher, dass die Schaltfläche "Gespeicherte Filter anzeigen" gedrückt ist, da sonst die Schaltfläche "Filter hinzufügen" nicht angezeigt wird. Sie finden diese oben rechts im Protokoll) . Mir ist keine Option bekannt, mit der Sie bestimmte Tags aus dem gesamten Logstream herausfiltern können.

Wenn Sie die Befehlszeile verwenden, können Sie bestimmte Tags stummschalten. Beispiel:

adb logcat AndroidRuntime:S *:V

zeigt alles ( *:V) bis zur ausführlichen Protokollebene an, mit Ausnahme des Tags AndroidRuntime , das auf die Google- Ebene "Stille" beschränkt ist, was bedeutet, dass nichts gedruckt wird.

Zum Anzeigen eines einzelnen Tags können Sie verwenden

adb logcat *:S MyAppTag:V OtherTag:V

Auf die gleiche Weise wird alles außer MyAppTag und OtherTag zum Schweigen gebracht . Weitere Informationen finden Sie unter Filtern der Protokollausgabe .


Danke, adb logcat <tag-name>:S *:Vdas habe ich gesucht. Ich möchte das gleiche Verhalten in der Eclipse-GUI-Logcat-Oberfläche, aber im Moment werde ich die Befehlszeile verwenden.
Jleuleu

5

Ich konnte keine Lösung finden, die in Android Studio (der IDE, die mit zukünftigen Versionen des Android SDK geliefert wird) ordnungsgemäß funktioniert. Der folgende reguläre Ausdruck löste jedoch mein Problem:

^(?!dalvikvm)

3

Ich habe einen Trick:

 Log.d(TAG, "MyTag" + message);

Wie Sie sehen können, wird beim Filtern mit einem Schlüssel "MyTag" nur das Protokoll meines Tags angezeigt.


1

Dies ist eine späte Antwort, aber möglicherweise nützlich. In der Eclipse-Umgebung befindet sich in der LogCat-Ansicht über der Tabelle ein Suchfeld. Achten Sie darauf, wenn leer, heißt es:

Nach Nachrichten suchen. Akzeptiert Java-Regexe. Präfix mit pid:, app:, tag: oder text: um den Umfang einzuschränken.

Dies bedeutet, dass Sie Ihr Tag filtern können, indem Sie das Tag MyTag oder sogar das Regex- Tag My schreiben . *


0

Eine andere Möglichkeit, Protokollnachrichten herauszufiltern, die nicht von IHRER App stammen, besteht darin, Folgendes auszuwählen:

Protokollstufe: Ausführlich

"Nur ausgewählte Anwendung anzeigen" (aus der Dropdown-Liste Filterauswahl)

Wählen Sie dann Ihre Anwendung aus der Dropdown-Liste debuggable im Logcat-Fenster aus.

Dies sollte nur Protokollnachrichten und Ausgaben von Ihrer App anzeigen.


Wie auch immer ... Sie benötigen Regex, um unerwünschte Texturbearbeitungen herauszufiltern ... und andere Dinge mit Ihrem App-Namen.
Davideas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.