Logging in TypeScript: Die besten Bibliotheken und Tools im Jahr 2024

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

Logging für TypeScript: Die besten Lösungen

Logging ist eine kritische Komponente jeder Produktionsanwendung. Für das TypeScript-Ökosystem gibt es zahlreiche Bibliotheken, die jeweils einzigartige Funktionen bieten. In diesem Artikel betrachten wir fünf der besten Lösungen: Winston, Pino, Bunyan, Log4js und TSLog. Sie erfahren ihre Stärken, Konfigurationsmöglichkeiten und erhalten fertige Codebeispiele.



1. Winston – Der universelle Standard

Winston ist die beliebteste Logging-Bibliothek für Node.js mit vollständiger TypeScript-Unterstützung. Sie bietet ein leistungsstarkes System für Transports (wohin Logs gesendet werden) und Formatierung.



import winston from 'winston';

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

logger.info('Anwendung gestartet', { service: 'user-service' });logger.error('Fehler bei der Datenbankverbindung', { error: err.message });


Vorteile:

  • Flexibles Transportsystem (Dateien, Konsole, HTTP, MongoDB, Elasticsearch)
  • Integrierte Unterstützung für Log-Rotation über winston-daily-rotate-file
  • Hervorragende Integration mit TypeScript – vollständige Typisierung
  • Kompatibilität mit Profilern und APM-Systemen


2. Pino – Der superschnelle Logger

Pino ist auf Leistung ausgelegt – es ist 5-10 Mal schneller als Winston. Die ideale Wahl für High-Load-Systeme und Microservices.



import pino from 'pino';

const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true } }});

logger.info({ user: { id: 123 } }, 'Benutzer authentifiziert');


Hauptmerkmale:

  • Minimaler CPU- und Speicherverbrauch
  • Native Unterstützung für Node.js streams
  • Effiziente Objektserialisierung
  • Unterstützung für Child-Logger für kontextbezogenes Logging


3. Bunyan – Strukturiertes Logging von Joyent

Bunyan wurde für die Arbeit mit Microservice-Architekturen entwickelt. Alle Logs werden im JSON-Format ausgegeben, was das Parsen und Analysieren vereinfacht.



import bunyan from 'bunyan';

const logger = bunyan.createLogger({ name: 'myapp', level: 'info', serializers: { req: bunyan.stdSerializers.req, err: bunyan.stdSerializers.err }});

logger.info({ req: request }, 'Eingehende Anfrage');


Merkmale:

  • Integrierte Serialisierer für HTTP-Anfragen und Fehler
  • Unterstützung für Ringbuffer zum Speichern der letzten N Einträge
  • Bunyan CLI-Dienstprogramm für formatierte Konsolenausgabe
  • Einfache Integration mit dem ELK-Stack


4. Log4js – Vertrauter Ansatz aus Java

Log4js ist ein Port des beliebten Java-Frameworks Log4j. Es bietet eine vertraute Konfiguration über Ebenen und Appender.



import log4js from 'log4js';

log4js.configure({ appenders: { out: { type: 'stdout' }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' } }});

const logger = log4js.getLogger();logger.debug('Verbindungsdebugging');logger.error('Kritischer Fehler');


Stärken:

  • Flexibles Kategorie- und Filtersystem
  • Unterstützung für mehrere Appender (Dateien, Datenbanken, TCP)
  • Möglichkeit, Ebenen für verschiedene Module zu überschreiben
  • Integrierte Unterstützung für Clusterbildung


5. TSLog – Leichtgewichtige Lösung für TypeScript

TSLog ist eine minimalistische Bibliothek, die speziell für TypeScript entwickelt wurde. Ideal für kleine

Empfehlungen