Logging in JavaScript-Anwendungen: Best Practices – Teil 3

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
```html

Logging in JavaScript-Anwendungen: Best Practices – Teil 3



In diesem letzten Teil der Artikelserie über Logging in JavaScript betrachten wir fortgeschrittene Techniken und Werkzeuge, die Ihnen helfen, ein zuverlässiges Überwachungssystem in Node.js-Anwendungen aufzubauen. Das Material ist sowohl für das Lernen als auch für die praktische Anwendung nützlich – vom JavaScript für Anfänger bis hin zu erfahrenen Entwicklern. Wir besprechen strukturiertes Logging, Log-Rotation, Integration mit externen Diensten und Sicherheit.



1. Strukturiertes Logging in Node.js



Ein gewöhnliches console.log() ist für die Produktionsumgebung nicht geeignet. Verwenden Sie stattdessen Bibliotheken, die JSON-Logs generieren. Dies vereinfacht deren Parsing und Analyse.



Beispiel mit der Bibliothek Winston

const winston = require('winston');

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

// Verwendunglogger.info('Benutzer registriert', { userId: 123, email: 'user@example.com' });logger.error('Datenbankfehler', { error: err.message, stack: err.stack });


Dieser Ansatz ermöglicht es, Logs einfach nach Level, Zeit und Kontext zu filtern. Dies ist besonders wichtig beim Programmieren von Microservices.



2. Log-Rotation und Größenverwaltung



Logs können schnell die Festplatte füllen. Verwenden Sie Rotation – automatische Archivierung alter Dateien. In Node.js lässt sich dies einfach mit dem Modul winston-daily-rotate-file realisieren.



Beispiel für die Rotationseinrichtung

const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({ filename: 'logs/application-%DATE%.log', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d'});

const logger = winston.createLogger({ transports: [transport]});


Dies stellt sicher, dass die Logs nicht mehr als 20 MB pro Tag belegen und 14 Tage lang aufbewahrt werden.



3. Integration mit externen Überwachungsdiensten



Für die zentrale Sammlung von Logs verwenden Sie Dienste wie Logstash, Datadog oder Sentry. In JavaScript erfolgt dies über Winston-Transports.



Beispiel für das Senden von Logs an Logstash

const { LogstashTransport } = require('winston-logstash-transport');

const logger = winston.createLogger({ transports: [ new LogstashTransport({ host: 'logstash.example.com', port: 5000 }) ]});


So können Sie Logs in Echtzeit analysieren, Dashboards und Alarme erstellen.



4. Sicherheit beim Logging



Protokollieren Sie niemals sensible Daten: Passwörter, Tokens, Kreditkartennummern. Verwenden Sie Filter oder Maskierungsfunktionen.



Beispiel für Datenmaskierung

function maskSensitive(obj) {  const masked = { ...obj };  if (masked.password) masked.password = '***';  if (masked.token) masked.token = '***';  return masked;}

logger.info('Benutzeranfrage', maskSensitive(req.body));


Dies schützt Sie vor Datenlecks und hilft bei der Einhaltung der DSGVO.



Fazit



In diesem Teil haben wir die wichtigsten Logging-Praktiken in JavaScript-Anwendungen auf Node.js betrachtet: strukturierte Logs, Rotation, Integration mit externen Systemen und Sicherheit. Diese Techniken helfen Ihnen, zuverlässige und wartungsfreundliche Systeme zu erstellen. Für das Lernen empfehlen wir, mit Winston zu beginnen und nach und nach komplexere Werkzeuge einzuführen. JavaScript für Anfänger mag komplex erscheinen, aber Übung macht Sie zum Profi. Viel Erfolg beim Programmieren.

```

Blogs

Buchempfehlungen