Node.js und Logging – Ein Überblick zur Artikelserie

Logging ist eine wichtige Grundlage für die Entwicklung und den Betrieb. Deshalb erstelle ich eine separate Artikelserie zu meinen Node.js-Logging-Best Practices. Heute gebe ich dir einen Überblick darüber, was du erwarten darfst.

3 Minuten

Mit diesem Beitrag starte ich eine neue Artikelserie zu Node.js. Der Schwerpunkt ist das Logging. Ich widme mich diesem Thema, weil es eine wichtige Grundlage für die Entwicklung und den Betrieb darstellt. Zum einen ist es essenziell, um das Verhalten von Software nachvollziehbar zu machen. Es hilft, Fehler zu finden, Probleme zu analysieren und Systeme im Betrieb zu überwachen. Zum anderen unterstützen gute Logs das Debugging, die Wartung, die Sicherheit und die Performance-Optimierung – insbesondere in komplexen, verteilten Anwendungen.

Themenblöcke

Wir widmen uns schrittweise folgenden Themenblöcken:

  1. Wir machen uns das NPM-Paket winston zunutze, um einen LogService bereitzustellen. Dieser dient uns später als Basis für Verfeinerungen. (zum Artikel)
  2. Damit wir den LogService konfigurieren können, ohne die Applikation neu zu releasen, werden wir Umgebungsvariablen nutzen. Um diese typsicher einzubinden, erstellen wir einen EnvVarService.
  3. Um die Festlegung der Umgebungsvariablen zu vereinfachen, nutzen wir das NPM-Paket dotenv und binden es in die Node.js-Applikation ein.
  4. Den neuen EnvVarService mit der .env-Datei nutzen wir exemplarisch, um den LogLevel und das LogFormat zu konfigurieren. Dadurch wird klar, wie du den EnvVarService nutzen kannst, um sämtliche Umgebungsvariablen in deiner Applikation typsicher verfügbar zu machen.
  5. In den Unit-Tests aus der Artikelserie über Node.js mit TSOA wurde deutlich, wie Konsolen-Log-Ausgaben bei der Ausführung stören. Wir stellen sicher, dass der LogService bei der Testausführung keine Ausgaben erzeugt.
  6. Im Sinne der Datensparsamkeit bietet es sich an, sensible und persönliche Daten aus den Logs auszuschließen. Wir erstellen eine Logging-Middleware, die z. B. E-Mail-Adressen anonymisiert.
  7. Wir greifen das Konzept der Correlation-ID auf: eine eindeutige Kennung, die einer Anfrage zugeordnet wird, sodass über mehrere Systemkomponenten hinweg zusammengehörige Logeinträge entstehen, um Abläufe, Fehler und Performance-Probleme in verteilten Systemen leichter nachvollziehen zu können. Hierfür schreiben wir eine Express-Middleware.
  8. Der LogService wird erweitert, sodass die Correlation-ID automatisch geloggt wird. Damit stellen wir zum einen sicher, dass jede Logausgabe die Zuordnung enthält. Zum anderen müssen wir uns nicht um das aktive Mitführen des Parameters kümmern.
  9. Wir erstellen eine weitere Express-Middleware für Http-Aufrufe, die die Performance misst und loggt – natürlich mit der Correlation-ID.

Fazit

Mit diesem Setup schaffen wir eine Grundlage, die aus meiner Sicht für jede Node.js-Applikation sinnvoll ist. Bevor du damit beginnst, empfehle ich dir die Artikelserie "Node.js mit TSOA und Authentifizierung" zu lesen. Morgen starten wir mit der Erstellung des LogServices.

call to action background image

Abonniere meinen Newsletter

Erhalte einmal im Monat Nachrichten aus den Bereichen Softwareentwicklung und Kommunikation gespikt mit Buch- und Linkempfehlungen.