Das Fenster Logcat in Android Studio unterstützt Sie beim Debuggen Ihrer App. Es werden Protokolle von Ihrem Gerät in Echtzeit angezeigt. Dazu gehören z. B. Nachrichten, die Sie Ihrer App mit der Klasse Log
hinzugefügt haben, Nachrichten von Diensten, die unter Android ausgeführt werden, oder Systemmeldungen, z. B. eine automatische Speicherbereinigung. Wenn eine App eine Ausnahme auslöst, zeigt Logcat eine Meldung an, gefolgt vom zugehörigen Stacktrace, der Links zur Codezeile enthält.
Erste Schritte mit dem Logcat-Fenster
So rufen Sie die Logeinträge für Ihre Anwendung auf:
- Erstellen Sie Ihre App in Android Studio und führen Sie sie auf einem physischen Gerät oder Emulator aus.
- Wählen Sie in der Menüleiste Ansicht > Toolfenster > Logcat aus.
Standardmäßig scrollt Logcat zum Ende. Wenn Sie in die Logcat-Ansicht klicken oder mit dem Mausrad nach oben scrollen, wird sie deaktiviert. Um sie wieder zu aktivieren, klicken Sie in der Symbolleiste auf Zum Ende scrollen . Sie können Logcat auch über die Symbolleiste löschen, anhalten oder neu starten.
Abbildung 1: Logcat formatiert Logs, um das Scannen nützlicher Informationen wie Tags und Nachrichten zu erleichtern und verschiedene Logtypen wie Warnungen und Fehler zu identifizieren.
Logs lesen
Jedem Log sind ein Datum, ein Zeitstempel, eine Prozess- und Thread-ID, ein Tag, ein Paketname, eine Priorität und eine verknüpfte Nachricht zugeordnet. Unterschiedliche Tags haben eine eindeutige Farbe, anhand derer die Art des Logs identifiziert werden kann. 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 für jedes Log Datum, Uhrzeit, Thread-ID, Tag, Paketname, Priorität und die zugehörige Nachricht angezeigt. Standardmäßig werden die Nachrichtenzeilen in der Logansicht nicht umgebrochen. Sie können aber die Option Soft-Wrap in der Logcat-Symbolleiste verwenden.
Sie können zur Ansicht Kompakt wechseln, in der weniger Standardanzeigeinformationen angezeigt werden. Klicken Sie dazu in der Symbolleiste Logcat auf Logcat-Formatierungsoptionen konfigurieren .
Um weiter zu konfigurieren, wie viele Informationen angezeigt werden sollen, wählen Sie Ansichten ändern aus und legen Sie fest, ob der Zeitstempel, Tags, Prozess-IDs oder Paketnamen angezeigt werden sollen.
Farbschema ändern
Wenn Sie das Farbschema ändern möchten, rufen Sie Android Studio > Einstellungen > Editor > Farbschema auf. Wählen Sie Android Logcat aus, um das Farbschema der Logansicht zu ändern. Wählen Sie Logcat-Filter aus, um das Farbschema des Filters zu ändern.
Zusätzliche Konfigurationsoptionen
Weitere Konfigurationsoptionen finden Sie unter Android Studio > Einstellungen > Tools > Logcat. Hier können Sie die Puffergröße für den Logcat-Zyklus, den Standardfilter für neue Logcat-Fenster und festlegen, ob Sie Filter aus dem Verlauf zur automatischen Vervollständigung hinzufügen möchten.
Logcat in mehreren Fenstern verwenden
Mithilfe von Tabs können Sie ganz einfach zwischen verschiedenen Geräten oder Abfragen wechseln. Sie können mehrere Logcat-Tabs erstellen. Klicken Sie dazu auf Neuer Tab . Wenn Sie mit der rechten Maustaste auf einen Tab klicken, können Sie ihn umbenennen oder neu anordnen.
Außerdem können Sie die Ansicht innerhalb eines Tabs aufteilen, um den Vergleich zwischen zwei Logsätzen zu erleichtern. Um eine Aufteilung zu erstellen, klicken Sie entweder mit der rechten Maustaste in die Logansicht oder klicken Sie in der Symbolleiste auf die Option Geteilte Bereiche und wählen Sie Rechts teilen oder Abteilen aus. Klicken Sie mit der rechten Maustaste und wählen Sie Schließen aus, um eine Aufteilung zu schließen. Für jede Aufteilung können Sie eine eigene Geräteverbindung, Ansichtsoptionen und Abfragen festlegen.
Abbildung 2: Logcat-Fenster in Android Studio aufteilen
In der Symbolleiste Logcat können Sie entweder zum Ende der Logs scrollen oder auf eine bestimmte Zeile klicken, damit diese Zeile sichtbar bleibt.
Abfragelogs mit Schlüssel/Wert-Paar-Suche
In Android Studio können Sie Suchanfragen für Schlüssel/Wert-Paare direkt über das Hauptabfragefeld generieren. Dieses Abfragesystem ermöglicht präzise Abfragen und schließt Logs auf Basis von Schlüssel/Wert-Paaren aus. Sie können zwar reguläre Ausdrücke verwenden, müssen sich bei Abfragen jedoch nicht auf sie verlassen. Um Vorschläge zu sehen, drücken Sie Ctrl
+ Space
im Abfragefeld.
Abbildung 3: Drücken Sie im Abfragefeld Ctrl
+ Space
, um eine Liste der vorgeschlagenen Abfragen aufzurufen.
Im Folgenden finden Sie einige Beispiele für Schlüssel, die Sie in Ihrer Abfrage verwenden können:
tag
: Übereinstimmung mit dem Feldtag
des Logeintrags.package
: Gleicht mit dem Paketnamen der Logging-App ab.process
: Gleicht mit dem Prozessnamen der Logging-App ab.message
: Gleicht mit dem Nachrichtenteil des Logeintrags ab.level
: Entspricht der angegebenen oder einer höheren schwerwiegenden Logebene, z. B.DEBUG
.age
: stimmt überein, wenn der Zeitstempel des Eintrags neu ist. Werte werden als Zahl gefolgt von einem Buchstaben angegeben, der die Zeiteinheit angibt:s
für Sekunden,m
für Minuten,h
für Stunden undd
für Tage. Beispielsweise filtertage: 5m
nur Nachrichten, die in den letzten 5 Minuten protokolliert wurden.
Negation und reguläre Ausdrücke
Die folgenden Felder unterstützen den Abgleich von Negation und regulären Ausdrücken: tag
, package
, message
und line
.
Negation wird durch Voranstellen eines -
vor dem Feldnamen ausgedrückt. Beispielsweise stimmt -tag:MyTag
mit Logeinträgen überein, deren tag
nicht den String MyTag
enthält.
Ein Abgleich mit regulären Ausdrücken wird durch Anfügen eines ~
an den Feldnamen ausgedrückt.
z. B. 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 durch &
und |
sowie Klammern ausgedrückten Operatoren AND
und OR
. Beispiele:
(tag:foo | level:ERROR) & package:mine
Beachten Sie, dass die normale Rangfolge der Operatoren erzwungen wird. Daher gilt Folgendes:
tag:foo | level:ERROR & package:mine
Wird bewertet als:
tag:foo | (level:ERROR & package:mine)
Implizite logische Operatoren
Wenn keine logischen Operatoren angewendet werden, wertet die Abfragesprache automatisch mehrere nicht negierte key-value
-Filterbegriffe mit demselben Schlüssel wie OR
und alles andere mit einem AND
aus.
Beispiele:
tag:foo tag:bar package:myapp
Wird bewertet als:
(tag:foo | tag:bar) & package:myapp
Aber:
tag:foo -tag:bar package:myapp
Wird bewertet als:
tag:foo & -tag:bar & package:myapp
Wenn mehrere Suchbegriffe ohne logischen Operator durch Leerzeichen getrennt sind, werden sie als UND mit niedriger Priorität behandelt. Der Begriff foo bar tag:bar1 | tag:bar2
entspricht beispielsweise 'foo bar' & (tag: bar1 | tag: bar2)
.
Sonderabfragen
package:mine
Der Paketschlüssel unterstützt den speziellen Wert mine
. Dieser spezielle Wert stimmt mit allen Paketnamen überein, die im offenen Projekt enthalten sind.
level
Die Abfrage level
stimmt mit der Logebene der Logcat-Nachricht überein, wobei die Logeintragsebene der Abfrageebene entspricht oder höher ist.
Beispielsweise stimmt level:INFO
mit jedem Logeintrag mit der Logebene INFO
, WARN
, ERROR
oder ASSERT
überein. Bei dieser Ebene wird nicht zwischen Groß- und Kleinschreibung unterschieden. Gültige Stufen: VERBOSE
, DEBUG
, INFO
, WARN
, ERROR
und ASSERT
.
age
Die Abfrage age
gleicht Einträge anhand ihres Zeitstempels ab und ist als age:<number><unit>
formatiert, wobei
<number>
ist eine Ganzzahl<unit>
ist entweders
,m
,h
oderd
(Sekunden, Minuten, Stunden und Tage).
Anhand der folgenden Liste gleicht die age
-Abfrage Lognachrichten mit einem Zeitstempel in dem durch den Wert beschriebenen Bereich ab. Beispiel: Die Abfrage age:5m
gleicht Einträge mit einem Zeitstempel ab, der nicht vor 5 Minuten zurückliegt.
age:30s
age:5m
age:3h
age:1d
Beachten Sie, dass der Zeitstempel mit dem Zeitstempel des Hosts und nicht mit dem verbundenen Gerät verglichen wird. Wenn die Uhrzeit des Geräts nicht richtig eingestellt ist, funktioniert diese Abfrage 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
gleicht Logeinträge ab, die unabhängig von der Logebene alles darstellen, was wie ein Java-Stacktrace aussieht.
name
-Schlüssel
Mit dem Schlüssel name
können Sie einen eindeutigen Namen für einen gespeicherten Filter angeben, damit er im Drop-down-Menü für den Filterverlauf leicht identifiziert werden kann. Obwohl Sie keinen Fehler erhalten, wenn Sie name
mehr als einmal angeben, verwendet die IDE nur den letzten angegebenen Wert für name
in der Abfrage.
Abfrageverlauf ansehen
Sie können den Abfrageverlauf aufrufen, indem Sie neben dem Abfragefeld auf Verlauf anzeigen klicken. Klicken Sie auf den Stern daneben, um eine Abfrage zu den Favoriten hinzuzufügen, damit sie in allen Studioprojekten oben in der Liste angezeigt wird. Sie können auch den Schlüssel name:
verwenden, damit Favoritenabfragen leichter zu erkennen sind. Weitere Informationen finden Sie unter Sonderabfragen.
Abbildung 4: Sie können eine Abfrage zu Ihren Favoriten hinzufügen, indem Sie auf den Stern daneben klicken.
Logs zu App-Abstürzen und -Neustarts im Blick behalten
Wenn Logcat feststellt, dass Ihr Anwendungsprozess angehalten und neu gestartet wurde, wird in der Ausgabe eine Meldung angezeigt, z. B. PROCESS ENDED
und PROCESS STARTED
.
Beim Neustart von Logcat wird die Sitzungskonfiguration wie die Aufteilung von Tabs, Filter und Ansichtsoptionen beibehalten, sodass Sie Ihre Sitzung einfach fortsetzen können.
Abbildung 5: Beim Neustart des Anwendungsprozesses gibt Logcat eine Meldung aus, dass der Prozess beendet und dann gestartet wurde.