Fehler im Code einer WordPress-Site mit Sentry loggen

Ob während der Entwicklung oder des Live-Betriebs: es ist hilfreich, wenn im Code auftretende Fehler festgehalten werden, damit sie behoben werden können. Sentry bietet diese Möglichkeit und ist recht schnell eingerichtet – hier zeige ich, wie das funktioniert und mit WordPress genutzt werden kann.

Mit Sentry können Fehler geloggt werden, die in einer Anwendung auftreten. Im WordPress-Kontext sind das in der Regel Fehler im PHP- und JavaScript-Code.

Für die Einrichtung von Sentry brauchen wir einen kostenlosen Sentry-Account und ein Sentry-Projekt für die Website. Daneben installieren wir das Plugin WordPress Sentry auf der Website, die wir überwachen wollen.

Nun brauchen wir noch die Sentry-DSN-Angabe für unser Projekt, damit das Sentry-Plugin weiß, wo es die Fehler-Informationen hinschicken soll. Die finden wir über Settings » Projects » ProjektName » Client Keys im Feld DSN.

Um jetzt unsere Website mit Sentry zu verbinden und alles zu loggen, was bei PHP schief läuft, fügen wir die folgenden beiden Zeilen in die wp-config.php ein:

define( 'WP_SENTRY_DSN', 'https://123@sentry.io/123' ); define( 'WP_SENTRY_ERROR_TYPES', E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_USER_DEPRECATED );

Den Wert für WP_SENTRY_DSN ersetzen wir mit dem Wert aus den Projekteinstellungen.

Um auch JavaScript-Fehler festzuhalten, können wir noch die folgende Zeile einfügen:

define( 'WP_SENTRY_PUBLIC_DSN', 'https://123@sentry.io/123' );

Auch hier nutzen wir als Wert wieder den Eintrag aus dem DSN-Feld.

Sentry auf bestimmte Domain(s) einschränken

Wenn JavaScript-Logging genutzt wird, ist der DSN-Wert in einem Inline-Script auf der Website eingebunden und so für alle einsehbar, die sich den Quellcode der Site anschaut. Daher bietet es sich an, Sentry so einzustellen, dass es nur Events von der Projekt-Domain verarbeitet.

Das geht in den General Settings des Projekts im Bereich Client Security. Darüber hinaus können wir im Bereich Data Privacy einstellen, dass IP-Adressen nicht mitgespeichert werden. Der Data Scrubber sollte standardmäßig an sein. Zu dem Punkt sensible Daten gibt es in der Dokumentation von Sentry eine eigene Seite Sensitive Data.

WordPress selbst kann doch auch Fehler loggen?

Das ist richtig. Allerdings von Haus aus keine JavaScript-Fehler, und es speichert alle Fehler in einer Datei auf dem Server, die man sich dann regelmäßig anschauen müsste. Sentry verschickt Benchrichtigungen und ist etwas einfacher zu nutzen, als sich immer mit dem Webserver verbinden zu müssen.

Und außerdem:

Sentry kann mehr, als »nur« Fehler loggen

Wer sich die Features-Seite von Sentry anschaut, sieht, dass Sentry noch einiges mehr kann, als nur Fehler zu loggen. So können bei JavaScript-Fehlern die vorangegangenen Aktionen gespeichert werden, die zu dem Fehler geführt haben. Bei PHP wird der Call-Stack zu einem Fehler angezeigt, ebenso wie ein Code-Schnipsel mit dem Code, der den Fehler ausgelöst hat.

Zudem kann Sentry mit eurer Code-Versionierung verbunden werden, um Daten zu Commits in Sentry zu erhalten und zu sehen, wann ein Bug es in den Code geschafft hat. Darüber hinaus gibt es noch Funktionen wie Zuweisung von Issues an Projekt-User, Anzeige von Umgebungsparametern, in denen der Fehler aufgetreten ist (also bei PHP zum Beispiel die PHP-Version, Webserver-OS, et cetera), und mehr.

Alternative zu SaaS: selbst hosten

Sentry ist Open Source und lässt sich bei Bedarf selbst hosten. Der empfohlene Weg ist hierbei die Nutzung von Docker. Das nur als abschließenden Hinweis, wenn jemand das Tool zwar interessant findet, es aber nicht als Software as a Service nutzen möchte.

3 Kommentare

  1. Sehr interessante Sache, muss ich mir beizeiten genauer anschauen. Oft merkt man ja gar nicht, dass es Fehler gibt, weil man die Website anders nutzt als die wirklichen Nutzer :/

  2. Wusste bisher nicht, dass Sentry Open Source ist. Direkt mal auf ein 5$ DigialOcean VPS installiert und ausprobiert. Sehr nützlich! Konnte direkt einige Fehler finden und korrigieren, die mir bisher nicht aufgefallen sind.

    Bei JavaScript Tracking nervt allerdings IE11/9 und uralte Chrome on Android-Browser gewaltig. Scheint leider auch keinen Filter zu geben diese grundsätzlich auszuschließen, wenn man sie nicht mehr unterstützt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.