Span bieten wir mehrere Möglichkeiten, dessen internen Zustand zu aktualisieren oder zu ändern. Hooks sind der Mechanismus dafür. Mithilfe speziell geformter Funktionen können wir jeden ausgehenden Span mit zusätzlichen Informationen anreichern, bevor er an die Push API gesendet wird.
Beide Arten von Hooks bestehen aus einem Array von zusammengesetzten Funktionen, die von rechts nach links angewendet werden. Mit anderen Worten: Die zuletzt hinzugefügten Hooks werden immer zuerst angewendet.
Wenn ein Span an appsignal.send() übergeben wird oder ein Error an appsignal.sendError(), werden Hooks in der folgenden Reihenfolge auf den Span angewendet:
- Decorators
- Optionale
tags- odernamespace-Argumente anappsignal.send() - Overrides
Decorators
Es kann notwendig sein, einemSpan auf globaler Ebene zusätzlichen Kontext hinzuzufügen, sodass alle Anfragen diese Information standardmäßig enthalten. Dafür können Decorators verwendet werden.
Overrides
Overrides sind die letzte Möglichkeit, Daten in einemSpan zu aktualisieren, bevor er an die Push API gesendet wird. Sie könnten beispielsweise wählen, alle Benutzerdaten in einem Override aus Spans zu entfernen.
Eigene Hooks schreiben
Hooks sind im Wesentlichen Funktionen, die einenSpan als einziges Argument nehmen und denselben Span zurückgeben. Während der Ausführung der Funktion können Änderungen am Span vorgenommen werden, wir empfehlen jedoch, keine weiteren Nebenwirkungen einzuführen.
Hier ist ein Beispiel, wie Sie einen Hook zum Appsignal-Objekt hinzufügen können:
npm-Modul verpackt werden kann, empfehlen wir, die Plugin-Schnittstelle zu nutzen, um ihn zu registrieren.