„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erweiterte Node.js-API-Protokollierung mit Winston und Morgan

Erweiterte Node.js-API-Protokollierung mit Winston und Morgan

Veröffentlicht am 31.07.2024
Durchsuche:654

Advanced Node.js API Logging with Winston and Morgan

Die Protokollierung ist ein entscheidender Bestandteil jeder Anwendung. Sie bietet Einblicke in das Verhalten der Anwendung, hilft beim Debuggen von Problemen und überwacht die Leistung. In einer Node.js-API kann eine erweiterte Protokollierung mithilfe von Bibliotheken wie Winston und Morgan erreicht werden. Dieser Artikel führt Sie durch die Einrichtung und Verwendung von Winston und Morgan für die erweiterte Protokollierung in einer Node.js-API.

Warum erweiterte Protokollierung erforderlich ist
Eine erweiterte Protokollierung ist aus mehreren Gründen unerlässlich:

  • Debugging und Fehlerbehebung: Protokolle bieten einen detaillierten Verlauf von Anwendungsereignissen, der bei der Diagnose von Problemen von unschätzbarem Wert ist. Sie helfen dabei, die Grundursache von Fehlern zu identifizieren und die Abfolge von Aktionen zu verstehen, die zu einem Problem führen.

  • Überwachung und Wartung: Durch die kontinuierliche Überwachung von Protokollen können Entwickler den Zustand und die Leistung der Anwendung verfolgen. Durch die Analyse von Protokollen können Sie Anomalien, Leistungsengpässe und potenzielle Probleme erkennen, bevor sie kritisch werden.

  • Auditing und Compliance: Für viele Anwendungen, insbesondere solche, die sensible Daten verarbeiten, ist die Führung detaillierter Protokolle eine Compliance-Anforderung. Protokolle liefern eine Aufzeichnung von Benutzeraktionen und Systemänderungen, die für Audits und die Einhaltung gesetzlicher Vorschriften von entscheidender Bedeutung sein können.

  • Sicherheit: Die Protokollierung sicherheitsrelevanter Ereignisse wie fehlgeschlagene Anmeldeversuche, unbefugter Zugriff und verdächtige Aktivitäten ist für die Erkennung und Reaktion auf Sicherheitsbedrohungen von entscheidender Bedeutung. Erweiterte Protokollierung hilft bei der Aufrechterhaltung einer sicheren Anwendungsumgebung.

Inhaltsverzeichnis

  1. Einführung in Winston und Morgan
  2. Einrichten eines Node.js-Projekts
  3. Winston und Morgan installieren
  4. Winston für erweiterte Protokollierung konfigurieren
  5. Morgan für die Protokollierung von HTTP-Anfragen integrieren
  6. Kombination von Winston und Morgan
  7. Protokollierungsformate anpassen
  8. Protokollierung bei verschiedenen Transporten
  9. Fehlerbehandlung und Protokollierung
  10. Abschluss

1.Einführung in Winston und Morgan
Winston ist eine vielseitige und benutzerfreundliche Protokollierungsbibliothek für Node.js. Es unterstützt mehrere Transporte für Protokollnachrichten, was bedeutet, dass Sie an verschiedenen Orten (Konsole, Dateien, Remote-Server usw.) mit verschiedenen Formaten und Ebenen protokollieren können.

Morgan ist eine HTTP-Request-Logger-Middleware für Node.js. Es vereinfacht die Protokollierung von HTTP-Anfragen in einem vordefinierten Format, was für die Verfolgung eingehender Anfragen und Antworten in einer API sehr nützlich sein kann.

2.Ein Node.js-Projekt einrichten
Erstellen Sie zunächst ein neues Node.js-Projekt, falls Sie noch keines haben:

mkdir node-api-logging
cd node-api-logging
npm init -y

3.Winston und Morgan installieren
Installieren Sie Winston und Morgan zusammen mit Express (zum Einrichten einer Basis-API):

npm install express winston morgan

4. Winston für erweiterte Protokollierung konfigurieren
Erstellen Sie eine logger.js-Datei, um Winston zu konfigurieren:

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;

5.Integration von Morgan für die Protokollierung von HTTP-Anfragen
Erstellen Sie eine middleware/logger.js-Datei, um Morgan mit Winston zu integrieren:

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;

6.Die Kombination von Winston und Morgan
Integrieren Sie sowohl Winston als auch Morgan in Ihre Express-Anwendung:

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});

7.Anpassen von Protokollierungsformaten
Sie können die Protokollierungsformate in Winston und Morgan anpassen. Beispielsweise möchten Sie möglicherweise zusätzliche Anfragedetails wie Header, Abfrageparameter oder Antwortzeiten protokollieren.

8.Protokollierung auf verschiedene Transporte
Winston unterstützt verschiedene Transporte. Sie können sich je nach Schweregrad der Meldungen an verschiedenen Zielen anmelden. Beispielsweise möchten Sie möglicherweise Fehlerprotokolle an einen Remote-Protokollierungsserver oder einen Drittanbieterdienst wie Loggly oder Papertrail senden.

9.Fehlerbehandlung und -protokollierung
Eine ordnungsgemäße Fehlerbehandlung und -protokollierung ist für die Identifizierung und Lösung von Problemen unerlässlich. Stellen Sie sicher, dass Ihre Fehlerbehandlungs-Middleware detaillierte Fehlerinformationen mit Winston protokolliert.

10.Fazit
Durch die Kombination von Winston und Morgan können Sie eine erweiterte Protokollierung in Ihrer Node.js-API erreichen. Winston bietet ein robustes Framework für die Protokollierung von Ereignissen auf Anwendungsebene, während Morgan die Protokollierung von HTTP-Anfragen vereinfacht. Zusammen bieten sie Ihnen eine umfassende Protokollierungslösung, die Ihre Möglichkeiten zur Überwachung und zum Debuggen Ihrer Anwendung verbessert.

Übersicht über den endgültigen Code
Hier ist eine kurze Zusammenfassung der Dateien und ihres Inhalts:

  • logger.js: Konfiguriert Winston mit benutzerdefinierter Formatierung und Transporten.
  • middleware/logger.js: Integriert Morgan mit Winston.
  • app.js: Richtet die Express-Anwendung ein und integriert sowohl Winston als auch Morgan. Mit diesem Setup können Sie Ihre Node.js-API effektiv protokollieren und überwachen und so die Wartung und das Debuggen vereinfachen.
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/dev_habib_nuhu/advanced-nodejs-api-logging-with-winston-and-morgan-4fb1?1 Bei Verstößen wenden Sie sich zum Löschen bitte an [email protected] Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3