Logs mit Logcat ansehen

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:

  1. Erstellen Sie Ihre App in Android Studio und führen Sie sie auf einem physischen Gerät oder Emulator aus.
  2. 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 Scrolle zum Ende-Symbol. Sie können Logcat auch über die Symbolleiste löschen, anhalten oder neu starten.

Die Benutzeroberfläche des Logcat-Fensters

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 Symbol „Umfließend“ 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 Symbol „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.

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

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.

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

UI zum Festlegen einer Anfrage als Favoriten

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.

Logcat-Fenster für App-Abstürze

Abbildung 5: Beim Neustart des Anwendungsprozesses gibt Logcat eine Meldung aus, dass der Prozess beendet und dann gestartet wurde.