TYPO3 Sentry Integration

Was ist Sentry und welche Varianten gibt es?

Sentry ist eine Open Source Anwendung für das Erfassen von Fehlern in Programmen. Das Tool gibt es zum einen als SaaS (Software as a Service) Variante oder zum selber Hosten. Die Basis Version ist kostenlos, somit ist dem Einstieg keine große Hürde gestellt.

Dabei zu beachten gilt, dass Open Source nicht gleich Open Core ist. Den Unterschied kannst du hier nachlesen: https://sentry.io/_/open-source/

Sentry unterstützt über 17 Sprachen und 29 Frameworks und ist sehr einfach in Projekte zu implementieren. Es kann auch in diversen Bereichen wie in der Webentwicklung, der nativen Entwicklung und vielen anderen Bereichen eingesetzt werden.

Warum macht es Sinn Sentry zu nutzen?

Sentry eignet sich als Hilfe für die Suche von Fehlern in Programmen. Es dient als eine Ergänzung für das Logging, da beide Anwendungen ihre Stärken mitbringen.

Logging ist das Abspeichern eines Ablaufes von Events, welche informative Zwecke oder auch Errors sein können. Der Unterschied beider Anwendungen ist, dass Sentry ausschließlich auf Errors und Crashes spezialisiert ist. In Logs werden wiederkehrende Errors immer wieder neu gelistet, das macht wiederum Sentry nicht. Sentry speichert bei Fehlern keinen vollständigen Bericht, sofern diese bereits existieren. Dadurch garantiert Sentry keine vollständige Historie von Fehlern, für diese dienen immer noch die Logs.

Sentry in TYPO3 Projekten

Um Sentry in einem TYPO3 Projekt einzubinden, muss zuerst in Sentry ein neues PHP Projekt angelegt werden, dieses wird im weiteren Schritt mit dem TYPO3 Projekt verbunden.

Bei dem Anlegen des Projektes erscheint eine Konfigurationsanleitung, für das Einbinden in PHP Anwendungen, hier ist vor allem die Zeile mit dem DSN Eintrag wichtig.

Der nächste Schritt erfolgt im TYPO3 Projekt. Hier muss zuerst die sentry_client Extension installiert werden. Das kann mit composer composer require networkteam/sentry-client oder via dem TER (TYPO3 Extension Repository) gehandhabt werden.

Nach der Installation muss die Extension konfiguriert werden. Hierfür muss die AdditionalConfiguration.php wie folgt angepasst werden:

$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['sentry_client']['dsn'] = 'http://public_key@your-sentry-server.com/project-id';

// Neu seit der Version 3.0
$GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler'] = 'Networkteam\SentryClient\ProductionExceptionHandler';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler'] = 'Networkteam\SentryClient\DebugExceptionHandler';

Damit wäre Sentry in das TYPO3 Projekt eingebunden.
Die Extension bietet aber noch einige weitere Konfiguraitonsmöglichkeiten:

  • Triggern des 404 Handlings statt der PageNotFoundException
  • Ignorieren von Verbindungsfehlern zur Datenbank
  • Melden von Nutzerinformationen: Eine Auswahl zwischen none | userid | usernameandemail
  • Blacklisten von Fehlermeldungen mit Regular Expression

Verbindung zu Sentry und TYPO3 testen

Um die Verbindung aus dem TYPO3 Projekt zu Sentry zu testen, kann man folgendes Typoscript eingebinden:

page = PAGE
page.20 = USER
page.20 {
    userFunc = \Networkteam\SentryClient\Client->captureException
}

Alternativ kann auch eine andere Art Error erzwungen werden, z.b. mit PHP.

Quellen: