Logs mit Logcat ansehen

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:

  1. In Android Studio können Sie Ihre App auf einem physischen Gerät erstellen und ausführen. Gerät oder Emulator nutzen.
  2. 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 Zum Symbol „Ende“ scrollen in der Symbolleiste aus. Sie können die Symbolleiste auch zum Löschen, Pausieren oder Neustarten Logcat

Benutzeroberfläche des Logcat-Fensters

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 Symbol „Abweichend“ 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 Symbol „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.

Mehrere Logcat-Fenster 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.

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.

Liste der Vorschläge im Abfragefeld 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 Feld tag 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 und d für Tage. Beispiel: Nur age: 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 entweder s, m, h oder d (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 Filtersymbol 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

Benutzeroberfläche zum Festlegen von Favoriten für eine Abfrage

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.

Logcat-Fenster für App-Abstürze

Abbildung 5: Wenn Ihr Anwendungsprozess neu gestartet wird, gibt Logcat eine Meldung aus, dass der abgeschlossen und dann gestartet.