Logcat ermöglicht das Filtern von Protokollen, funktioniert jedoch folgendermaßen: Sie definieren Filter und logcat zeigt nur Nachrichten an, die mit Filtern übereinstimmen. Aber gibt es eine Möglichkeit, alle Protokolle mit Ausnahme einiger durch Filter definierter TAGs anzuzeigen?
122
Antworten:
Wenn Sie verwenden, können
adb logcat
Sie es durch grep leiten und es invertiert verwenden: Von der grep-Manpage :Beispielsweise:
Sie können dies erweitern, indem Sie reguläre Ausdrücke verwenden .
Hier ist ein Beispiel für einen solchen Ausdruck:
Dieser würde prüfen, ob eines der angegebenen Ereignisse eintritt, grep würde sie dann nicht auflisten.
quelle
grep
ist ein Standard-Unix-Befehl. Für Windows können Sie versuchenfind /V "notshownmatchpattern"
. PS Anscheinend hat die ADB-Shell auch einegrep
. Aber es ist nicht dasselbe wie das Standard-Unixgrep
!Sie können dies in DDMS Monitor (und auch in Eclipse oder Android Studio) mit dem Eingabefeld für reguläre Ausdrücke und negativen Vorausschau-Aussagen tun. Beispielsweise schließe ich viel Rauschen aus meinem Protokoll aus, und zwar mit den folgenden Angaben :
(Das "Tag:" ist nicht Teil des regulären Ausdrucks, weist LogCat jedoch an, nur den regulären Ausdruck auf das Tag-Feld anzuwenden. Wenn Sie diesen Trick in einem gespeicherten Filter verwenden, geben Sie nur den regulären Ausdruck in das Eingabefeld "Tag" ein und lassen Sie das Präfix "tag:" weg)
Im Logcat-Monitorbereich von Android Studio können Sie einen gespeicherten Filter dafür einrichten, indem Sie das Dropdown-Menü oben rechts öffnen (möglicherweise ist "Nur ausgewählte Anwendung anzeigen" ausgewählt) und Filterkonfiguration bearbeiten auswählen. Erstellen Sie einen neuen Logcat-Filter und setzen Sie
^(?!(WifiMulticast
... etc.))
im Feld Log Tag mitRegex
aktiviertem Kontrollkästchen.quelle
Wenn Sie bestimmte Nachrichten in Android Studio nach Tag-Namen ausschließen oder filtern möchten, rufen Sie das LogCat-Fenster => Filterkonfiguration bearbeiten auf und geben Sie unter "Nach Log-Tag (regulärer Ausdruck)" Folgendes ein: "
Beachten Sie, dass keine Leerzeichen vorhanden sind. Dies ist wichtig
quelle
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Dies schließt Texte mit Inhalten aus WindowManager, dalvik, ...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Dadurch werden die Tags WindowManager, dalvik, ... von logcat ausgeschlossen
quelle
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
In der Shell können Sie einen Befehl wie den folgenden verwenden:
Dies schließt alle Protokolle außer denen mit den Tags
AlarmManagerService
und einPowerManagerService
.(Die
:S
Stände stehen für "stumm", was bedeutet, dass für diese Tags nichts gedruckt wird. Die:V
Stände für "ausführlich" bedeuten, dass für alle anderen Tags alles gedruckt wird. In der Android-Dokumentation für logcat finden Sie weitere Details zu anderen Optionen, die Sie verwenden können die Filter.)Sie können auch die
ANDROID_LOG_TAGS
Umgebungsvariable verwenden, um Standardfilter einzurichten, z. B. (in Bash):quelle
S
ist das für "still". Ich habe die Antwort aktualisiert, um dies zu erklären, wie Sie vorschlagen.Kombinieren Sie sowohl positiven als auch negativen Lookahead für eine leistungsstärkere Filterung.
Beispiel:
Tags in den ersten verschachtelten Klammern sind enthalten.
Tags in der Sekunde sind ausgeschlossen.
quelle
Hier ist eine Liste von Filtern, mit denen ich Samsung- Systemprotokolle ignoriert habe . würde auch mit anderen Geräten funktionieren.
quelle
Eine einfache Möglichkeit, dies zu tun, besteht darin, nur die Tags zu filtern, die Sie sehen möchten.
Ruft nur diese Tags auf.
quelle
In der Eclipse Logcat-Ansicht gibt es keine solche Option. Sie können jedoch die Protokollebene verwenden, um Nachrichten auszuschließen, deren Protokollebene zu niedrig ist. Z.B. Wenn Sie es auf I (nfo) setzen, werden keine D (ebug) - und (V) erbose-Nachrichten angezeigt.
quelle