CrashReport
Das CrashReport-Wörterbuch der Reporting API stellt einen Absturzbericht dar.
Hinweis:
Es ist nicht möglich, Absturzberichte mit einem ReportingObserver abzurufen – die Berichte werden nur generiert, wenn der Browser abstürzt, zu welchem Zeitpunkt der Beobachtercode nicht verfügbar ist, um ausgeführt zu werden.
Instanzeigenschaften
age-
Das Alter des Berichts in Millisekunden.
type-
Der String
"crash", der angibt, dass dies ein Absturzbericht ist. url-
Ein String, der die URL des Dokuments repräsentiert, das den Bericht generierte.
user_agent-
Der User-Agent-String des Browsers, der den Bericht generierte.
body-
Der Körper des Berichts. Dies ist ein Objekt mit den folgenden Eigenschaften:
crash_report_apiExperimentell Optional-
Ein Objekt, das die Schlüssel-Wert-Paare enthält, die über die Methode
CrashReportContext.set()gesetzt wurden, falls vorhanden. is_top_levelExperimentell-
Ein Boolean-Wert, der angibt, ob das abgestürzte Dokument ein Top-Level-Dokument (
true) oder ein eingebettetes Dokument (false) war. reasonExperimentell Optional-
Ein String, der den spezifischen Grund angibt, warum der Absturz auftrat, falls bekannt. Mögliche Werte sind:
oom-
Die Seite hat keinen Speicher mehr.
unresponsive-
Die Seite wurde wegen Unresponsiveness beendet.
stackExperimentell Optional-
Ein String, der den JavaScript-Call-Stack zum Zeitpunkt des Absturzes darstellt. Dies wird eingeschlossen, wenn der
reasonunresponsiveist, wenn derDocument-Policy-Wert fürinclude-js-call-stacks-in-crash-reportsim abgestürzten Dokumenttrueist und wenn der Call-Stack aus dem abgestürzten Dokument wiederhergestellt werden konnte. visibility_stateExperimentell-
Ein enumerierter Wert, der angibt, ob das Dokument sichtbar ist. Dies spiegelt den Wert der Eigenschaft
Document.visibilityStatewider. Mögliche Werte sind:visible-
Der Dokumentinhalt ist mindestens teilweise sichtbar.
-
Der Dokumentinhalt ist vollständig verborgen.
Beschreibung
Absturzberichte mit beliebigen Informationen können mit der Reporting API an einen Server-Endpunkt gesendet werden. Dies ist nützlich, da wir während der gesamten Lebensdauer einer Anwendung detaillierte Diagnoseinformationen speichern und die Berichte zur effektiveren Fehlerbehebung bei Abstürzen verwenden können.
Die Diagnoseinformationen werden in einem speziellen Schlüssel-Wert-Speicher gespeichert, der über das CrashReportContext-Objekt des Dokuments manipuliert werden kann. Darauf kann über die Eigenschaft Window.crashReport zugegriffen werden.
Wenn der Browser abstürzt, werden die im Schlüssel-Wert-Speicher gespeicherten Informationen zu einem CrashReport hinzugefügt und an einen Berichtserver gesendet. Der Berichtserver-Endpunkt und seine Zuordnung zu einer bestimmten URL werden mit dem Reporting-Endpoints-Header festgelegt.
-
Wenn ein
crash-reporting-Server-Endpunkt definiert ist, werden Absturzberichte dorthin geliefert. Beispiel:httpReporting-Endpoints: crash-reporting="https://example.com/reports" -
Wenn ein
crash-reporting-Endpunkt nicht definiert ist, aber ein „default“-Berichtserver-Endpunkt definiert ist, werden Absturzberichte dorthin geliefert. Beispiel:httpReporting-Endpoints: default="https://example.com/reports" -
Wenn weder der eine noch der andere Endpunkt definiert sind, werden Absturzberichte nicht geliefert.
Beispiele
>Senden eines Berichts an einen Berichtsendpunkt
Um eine Webseite so zu konfigurieren, dass sie einen Absturzbericht sendet, müssen Sie einen Berichtserver-Endpunkt mit dem Reporting-Endpoints-Header definieren, zum Beispiel https://example.com/reports, wie bereits beschrieben.
Eine typische Berichtstruktur sieht wie folgt aus:
{
"age": 27,
"type": "crash",
"url": "https://example.com/",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0",
"body": {
"sourceFile": "https://example.com/",
"reason": "unresponsive",
"stack": "SomeError: ... at ...",
"is_top_level": true,
"visibility_state": "visible",
"crash_report_api": {
"crash_data_1": "0001",
"crash_data_2": "0002"
}
}
}
Der Bericht wird als JSON-Objekt in einer POST-Anfrage an den Endpunkt gesendet, wann immer der Browser abstürzt.