Im Logcat-Fenster in Android Studio können Sie Fehler in Ihrer App beheben,
Protokolle von Ihrem Gerät in Echtzeit anzeigen, z. B. Nachrichten, die Sie
die Ihrer App mit der Klasse Log
hinzugefügt wurden, Nachrichten
von Diensten unter Android oder Systemmeldungen, wie z. B. wenn ein
Datensammlung stattfindet. Wenn eine Anwendung eine Ausnahme auslöst, zeigt Logcat eine Meldung an.
gefolgt vom zugehörigen Stacktrace mit Links zur Codezeile.
Erste Schritte mit dem Logcat-Fenster
So rufen Sie die Logeinträge für Ihre Anwendung auf:
- In Android Studio können Sie Ihre App auf einem physischen Gerät erstellen und ausführen. Gerät oder Emulator nutzen.
- Wählen Sie Ansicht > Tool-Fenster > Logcat aus der Menüleiste.
Standardmäßig scrollt Logcat zum Ende. Durch Klicken in die Logcat-Ansicht oder durch Scrollen mit dem Mausrad nach oben, um diese Funktion zu deaktivieren. Wenn Sie sie wieder aktivieren möchten, klicken Sie auf Bis zum Ende scrollen in der Symbolleiste aus. Sie können die Symbolleiste auch zum Löschen, Pausieren oder Neustarten Logcat
Abbildung 1: Logcat formatiert Logs, um das Scannen nützlicher Informationen, wie Tags und Nachrichten, und identifizieren verschiedene Arten von Protokollen, wie z. B. Warnungen und Fehlermeldungen.
Logs lesen
Jedes Log enthält ein Datum, einen Zeitstempel, eine Prozess- und Thread-ID, ein Tag,
Priorität und die damit verbundene Botschaft. Verschiedene Tags haben eine eigene Farbe
um den Logtyp zu identifizieren. Jeder Logeintrag hat die Priorität FATAL
,
ERROR
, WARNING
, INFO
, DEBUG
oder VERBOSE
.
Die folgende Lognachricht hat beispielsweise die Priorität DEBUG
und das Tag
ProfileInstaller
:
2022-12-29 04:00:18.823 30249-30321 ProfileInstaller com.google.samples.apps.sunflower D Installing profile for com.google.samples.apps.sunflower
Logansicht konfigurieren
In der Standard-Logansicht werden Datum, Uhrzeit, Prozess, Thread-ID, Tag, Paketname, Priorität und die damit verknüpfte Nachricht. In der Standardeinstellung In der Logansicht werden Zeilen nicht umgebrochen, aber Sie können die Methode Soft-Wrap in der Logcat-Symbolleiste.
Sie können zur Ansicht Kompakt wechseln, in der standardmäßig weniger Informationen angezeigt werden. indem Sie auf Logcat-Formatierungsoptionen konfigurieren aus der Logcat-Symbolleiste aus.
Um weiter zu konfigurieren, wie viele Informationen angezeigt werden sollen, wählen Sie Ansicht ändern und wählen Sie aus, ob Zeitstempel, Tags oder Prozess-IDs oder Paketnamen angezeigt.
Farbschema ändern
Wenn du das Farbschema ändern möchtest, gehe zu Android Studio > Einstellungen > Bearbeiter > Farbschema: So ändern Sie das Farbschema der Logansicht: Wählen Sie Android Logcat aus. Um das Farbschema Ihres Filters zu ändern, wählen Sie Logcat-Filter:
Zusätzliche Konfigurationsoptionen
Weitere Konfigurationsoptionen findest du unter Android Studio > Einstellungen > Tools > Logcat: Hier können Sie den Logcat auswählen Zyklus-Puffergröße, Standardfilter für neue Logcat-Fenster und ob Sie Filter vom Verlauf zur automatischen Vervollständigung hinzufügen.
Logcat in mehreren Fenstern verwenden
Mithilfe von Tabs kannst du ganz einfach zwischen verschiedenen Geräten oder Abfragen wechseln. Sie können Logcat-Tabs durch Klicken auf Neuer Tab . Wenn Sie mit der rechten Maustaste auf einen Tab klicken, können Sie ihn umbenennen und neu anordnen.
Außerdem können Sie die Ansicht in einem Tab aufteilen, zwei Arten von Protokollen vergleichen. Um eine Aufteilung zu erstellen, klicken Sie entweder mit der rechten Maustaste in die oder klicken Sie in der Symbolleiste auf die Option Split Panels und wählen Sie Nach rechts teilen oder Nach unten teilen: Um eine Aufteilung zu schließen, klicken Sie mit der rechten Maustaste und wählen Sie Schließen aus. Für jeden Split können Sie eine eigene Geräteverbindung, Optionen und Abfrage.
Abbildung 2: Logcat-Fenster in Android Studio teilen
In der Symbolleiste von Logcat können Sie entweder zum Ende der Protokolle scrollen oder können Sie auf eine bestimmte Linie klicken, damit diese Linie sichtbar bleibt.
Logs mit Schlüssel/Wert-Paar-Suche abfragen
In Android Studio können Sie Schlüssel/Wert-Paare direkt über die
Hauptabfragefeld ein. Dieses Abfragesystem bietet eine genaue Vorstellung von dem, was Sie
Logs basierend auf Schlüssel/Wert-Paaren ausschließen. Während Sie die Möglichkeit haben,
reguläre Ausdrücke verwenden, müssen Sie sich bei Abfragen nicht darauf verlassen. Um zu sehen,
Vorschläge enthalten, drücken Sie Ctrl
+ Space
im Suchfeld.
Abbildung 3: Drücken Sie Ctrl
+ Space
im Abfragefeld, um eine Liste der
vorgeschlagene Abfragen.
Im Folgenden finden Sie einige Beispiele für Schlüssel, die Sie in Ihrer Abfrage verwenden können:
tag
: Gleicht den Abgleich mit dem Feldtag
des Logeintrags ab.package
: Gleicht den Paketnamen der Logging-App ab.process
: Gleicht den Prozessnamen der Logging-App ab.message
: Gleicht mit dem Nachrichtenteil des Logeintrags ab.level
: entspricht der angegebenen oder höheren schweren Logebene, z. B.DEBUG
.age
: Weist darauf hin, ob der Zeitstempel des Eintrags neu ist. Werte werden angegeben als Zahl gefolgt von einem Buchstaben für die Zeiteinheit:s
für Sekunden,m
für Minuten,h
für Stunden undd
für Tage. Beispiel: Nurage: 5m
-Filter Nachrichten, die in den letzten 5 Minuten protokolliert wurden.
Negation und reguläre Ausdrücke
Die folgenden Felder unterstützen den Abgleich mit Negation und regulären Ausdrücken: tag
,
package
, message
und line
.
Zum Ausdrucken der Negation wird dem Feldnamen ein -
vorangestellt. Beispiel:
-tag:MyTag
stimmt mit Logeinträgen überein, deren tag
nicht den String enthält.
MyTag
Für den Abgleich regulärer Ausdrücke wird eine ~
an den Feldnamen angehängt.
Beispiel: tag~:My.*Tag
.
Modifikatoren für Negation und reguläre Ausdrücke können kombiniert werden. Beispiel:
-tag~:My.*Tag
Logische Operatoren und Klammern
Die Abfragesprache unterstützt die Operatoren AND
und OR
, die von &
und
|
und Klammern. Beispiel:
(tag:foo | level:ERROR) & package:mine
Beachten Sie, dass die normale Rangfolge der Operatoren erzwungen wird. Daher gilt:
tag:foo | level:ERROR & package:mine
Wird ausgewertet als:
tag:foo | (level:ERROR & package:mine)
Implizite logische Operatoren
Wenn keine logischen Operatoren angewendet werden, wird die Abfragesprache
mehrere nicht negierte key-value
-Filterbegriffe mit demselben Schlüssel wie ein
OR
und alles andere mit einem AND
.
Beispiel:
tag:foo tag:bar package:myapp
Wird ausgewertet als:
(tag:foo | tag:bar) & package:myapp
Aber:
tag:foo -tag:bar package:myapp
Wird ausgewertet als:
tag:foo & -tag:bar & package:myapp
Wenn mehrere Suchbegriffe ohne logischen Operator durch Leerzeichen getrennt sind,
werden sie als UND mit geringer Priorität behandelt. Der Begriff
foo bar tag:bar1 | tag:bar2
entspricht
'foo bar' & (tag: bar1 | tag: bar2)
.
Sonderabfragen
package:mine
Der Paketschlüssel unterstützt den speziellen Wert mine
. Dieser spezielle Wert entspricht
Paketnamen, die im geöffneten Projekt enthalten sind.
level
Die level
-Abfrage stimmt mit der Logebene der Logcat-Nachricht überein, wobei der Wert
Logeintragsebene ist größer oder gleich der Abfrageebene.
level:INFO
stimmt beispielsweise mit jedem Logeintrag mit der Logebene INFO
überein.
WARN
, ERROR
oder ASSERT
. Die Groß- und Kleinschreibung spielt dabei keine Rolle. Gültige Stufen sind:
VERBOSE
, DEBUG
, INFO
, WARN
, ERROR
und ASSERT
.
age
Die Abfrage age
gleicht Einträge anhand ihres Zeitstempels ab und hat folgendes Format:
age:<number><unit>
, wobei
<number>
ist eine Ganzzahl<unit>
ist entweders
,m
,h
oderd
(Sekunden, Minuten, Stunden oder Tage).
In der folgenden Liste stimmt die Abfrage age
mit Logeinträgen überein, die einen
Zeitstempel im durch den Wert beschriebenen Bereich. Beispiel: Die Abfrage age:5m
.
stimmt mit Einträgen überein, deren Zeitstempel nicht älter als 5 Minuten ist.
age:30s
age:5m
age:3h
age:1d
Beachten Sie, dass der Zeitstempel mit dem Zeitstempel des Hosts verglichen wird, nicht der des verbundenes Gerät. Wenn die Uhrzeit des Geräts nicht korrekt eingestellt ist, wird diese Abfrage funktioniert möglicherweise nicht wie erwartet.
is
-Schlüssel
Sie können den Schlüssel is
so verwenden:
is:crash
gleicht Logeinträge ab, die einen Anwendungsabsturz darstellen (entweder nativ oder Java).is:stacktrace
stimmt mit Logeinträgen überein, die alles darstellen, was wie ein Java-Stacktrace, unabhängig von der Logebene.
name
-Schlüssel
Mit dem Schlüssel name
können Sie einen eindeutigen Namen für einen gespeicherten Filter angeben, sodass er
ist im Drop-down-Menü „Filterverlauf“ leicht zu finden. Auch wenn Sie kein
Fehler bei mehrfacher Angabe von name
, verwendet die IDE nur das letzte
angegebenen Wert für name
in der Abfrage.
Abfrageverlauf ansehen
Sie können Ihren Abfrageverlauf anzeigen, indem Sie auf
Verlauf anzeigen
neben dem Abfragefeld. Um eine Abfrage den Favoriten hinzuzufügen, sodass sie am Anfang der
Studio-Projekte ansehen möchten, klicken Sie auf den Stern daneben. Sie können auch
verwenden Sie die Taste name:
, damit häufig verwendete Suchanfragen leichter zu erkennen sind. Weitere Informationen
Weitere Informationen zu Sonderabfragen
Abbildung 4: Klicken Sie auf den Stern daneben, um eine Abfrage zu den Favoriten hinzuzufügen.
Protokolle über App-Abstürze und -Neustarts hinweg verfolgen
Wenn Logcat feststellt, dass Ihr Anwendungsprozess beendet und neu gestartet wurde, wird Folgendes angezeigt:
Eine Nachricht in der Ausgabe, z. B. PROCESS ENDED
und PROCESS STARTED
.
Durch den Neustart von Logcat wird die Sitzungskonfiguration (z. B. Tab-Aufteilungen,
Filter und Anzeigeoptionen, damit Sie Ihre Sitzung problemlos fortsetzen können.
Abbildung 5: Wenn Ihr Anwendungsprozess neu gestartet wird, gibt Logcat eine Meldung aus, dass der abgeschlossen und dann gestartet.