Logging für TypeScript: Die Bibliothek Winston

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Winston und warum wird es benötigt?

Winston ist eine beliebte Bibliothek für das Logging in TypeScript und JavaScript. Sie bietet ein flexibles System zur Protokollierung mit Unterstützung für mehrere Transports (Ausgabe in Konsole, Datei, Datenbank, HTTP), Loglevel und Nachrichtenformatierung. In großen Projekten ist das Logging für das Debugging, Monitoring und die Prüfung von Benutzer- oder Systemaktionen von entscheidender Bedeutung. Winston ermöglicht es, Logs zu strukturieren, nach ihrer Wichtigkeit zu filtern und in einer für die Analyse geeigneten Form zu speichern.

Wie installiere ich Winston in TypeScript

Führen Sie zur Installation den folgenden Befehl im Terminal aus:

npm install winston

Es wird außerdem empfohlen, die Typen für TypeScript zu installieren:

npm install --save-dev @types/winston

Hauptfunktionen von Winston

  • Loglevel: error, warn, info, verbose, debug, silly (anpassbar).
  • Transports: Console, File, HTTP, MongoDB, Syslog und andere.
  • Formatierung: JSON, einfacher Text, Zeitstempel, Farben.
  • Asynchronität: blockiert den Hauptthread nicht.
  • Benutzerdefinierte Profile: Erstellung eigener Level und Transports.

Codebeispiel in TypeScript

import winston from 'winston';

const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console({ format: winston.format.simple(), }), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }), ],});

logger.info('Anwendung gestartet');logger.error('Fehler bei der Datenbankverbindung');

Dieser Code erstellt einen Logger, der alle Nachrichten ab Level info in die Konsole schreibt, Fehler in error.log und alle Logs in combined.log.

Wann sollte Winston verwendet werden

Winston eignet sich für alle serverseitigen Anwendungen auf Node.js (Express, NestJS, Koa), Microservices, CLI-Tools und komplexe Skripte. Besonders nützlich ist es in Produktionsumgebungen, in denen eine zentrale Log-Speicherung, Dateirotation und die Integration mit Monitoring-Systemen (ELK, Splunk) erforderlich ist. Für einfache Projekte kann das eingebaute console.log verwendet werden, aber Winston bietet Kontrolle und Skalierbarkeit.

Empfehlungen