Die Protokollierung kann ein unschätzbares Werkzeug zur Fehlerbehebung und Analyse der App-Nutzung sein. Diese Pakete machen es zu einem unkomplizierten Prozess.

Eine ordnungsgemäße Protokollierung ist ein kritischer Aspekt beim Erstellen und Verwalten von funktionierenden Webanwendungen. Es kann Ihnen helfen, Fehler zu verfolgen, Leistungsprobleme zu diagnostizieren und zu verstehen, wie Benutzer mit Ihrer App interagieren.

Node.js verfügt über viele Protokollierungspakete, mit denen Sie strukturierte Protokolle erstellen und verwalten können. Hier lernen Sie die wichtigsten Protokollierungspakete kennen, die derzeit im Node.js-Ökosystem verfügbar sind, und erfahren, wie Sie sie verwenden.

1. Winston

Winston ist eine Node.js-Bibliothek, die flexible Protokollierungsfunktionen bietet, einschließlich mehrerer Transporte. Ein „Transport“ ist ein Speichermedium für Ihre Protokolle.

Winston unterstützt Konsolen-, Datei- und Netzwerktransporte. Das bedeutet, dass Sie Ihre Protokolle auf der Konsole drucken, in eine Datei schreiben oder über ein Netzwerk senden können. Mithilfe der Protokollierungsebenen von Winston können Sie benutzerdefinierte Transporte erstellen und Protokolle basierend auf dem Schweregrad filtern.

instagram viewer

Sie können Winston mit als Abhängigkeit in Ihrem Projektverzeichnis installieren npm, der JavaScript-Paketmanager. Führen Sie diesen Befehl aus:

npm winston installieren

Der folgende Codeblock zeigt, wie Sie mit Winston ein einfaches Protokollierungssystem einrichten. Sie können Protokolle für verschiedene Standorte und unterschiedliche Schweregrade definieren.

konst Winston = erfordern("Winston");

// Winston-Logger
konst Logger = winston.createLogger({
eben: 'die Info',
Format: winston.format.json(),
defaultMeta: { Service: 'mein-service' },
Transporte: [
neu winston.transports. Konsole(),
neu winston.transports. Datei({ Dateinamen: 'Fehlerprotokoll', eben: 'Fehler' }),
neu winston.transports. Datei({ Dateinamen: 'combined.log' })
]
});

logger.info("Hallo Winston!");
logger.warn('Warnung: Etwas kann nicht stimmen.');
Logger.Fehler ('Ein Fehler ist aufgetreten.');

Dieser Code konfiguriert einen Logger mit drei Transporten. Der erste ist ein Konsolentransport, der Protokollmeldungen an die Konsole ausgibt. Der zweite ist ein Dateitransport, der Protokolle mit der Stufe „error“ in eine „error.log“-Datei schreibt. Der dritte ist ein Dateitransport, der alle Protokolle in eine „combined.log“-Datei schreibt.

Der Logger ist standardmäßig so eingestellt, dass er auf der „Info“-Ebene protokolliert und enthält ein Standard-Metadatenobjekt mit einem „Service“-Feld, das auf „my-service“ gesetzt ist.

Der Code protokolliert dann drei Meldungen mit dem Logger auf den Ebenen „info“, „warn“ bzw. „error“. Diese Meldungen werden entsprechend der Konfiguration der Transporte an die Konsole und die entsprechenden Protokolldateien ausgegeben.

2. Morgan

Morgan ist eine Logging-Middleware für Node.js, die grundlegende Request-Logging-Funktionen bereitstellt. Es ist so konzipiert, dass es leicht und einfach zu bedienen ist. Morgan fängt HTTP-Anforderungen ab und protokolliert relevante Informationen wie Anforderungsmethode, URL, Statuscode usw.

Einer der Hauptvorteile von Morgan ist seine Einfachheit. Sie können es mit wenigen Codezeilen zu einer Node.js-Anwendung hinzufügen, da keine zusätzliche Konfiguration zum Einrichten erforderlich ist.

Morgan unterstützt mehrere Protokollierungsformate, darunter das gemeinsam, kombiniert, kurz, winzig, Und Entwickler Formate, sodass Sie eines auswählen können, das Ihren Anforderungen am besten entspricht.

Sie können Morgan als Abhängigkeit in Ihrem Projektverzeichnis installieren, indem Sie diesen Befehl ausführen:

npm installiert morgan

Dieser Code zeigt, wie man Morgan in verwendet eine Express-Anwendung:

konst ausdrücken = erfordern("äußern");
konst Morgan = erfordern("morgan");
konst app = ausdrücken ();

app.use (morgan("Entwickler"));

app.get("/", (req, res) => {
res.send("Hallo Welt!");
});

app.listen(3000, () => Konsole.Protokoll(„App gestartet“.));

Der Code initialisiert Morgan mit der Entwickler Format. Wenn Sie eine GET-Anforderung an die Root-Route (/) stellen, protokolliert Morgan die Details dieser Anforderung in der Konsole.

Trotz seiner Einfachheit ist Morgan ein leistungsstarkes Protokollierungspaket, das grundlegende Anforderungsprotokollierungsfunktionen für Node.js-Anwendungen bereitstellt.

3. Pino

Pino ist ein beliebtes und leichtes Protokollierungspaket für Node.js-Anwendungen, das sich durch schnelle Leistung und geringen Overhead auszeichnet, wie in angegeben ihre Maßstäbe.

Pino unterstützt mehrere Transportarten, die einfach mit benutzerdefinierten Transporten erweitert werden können. Eine der Hauptfunktionen von Pino ist die Fähigkeit, Nachrichten im JSON-Format zu protokollieren, wodurch sie einfach zu analysieren und zu analysieren sind.

Die Verwendung von Pino variiert je nach Node.js-Framework; Sie können Pino als Abhängigkeit in Ihrem Express-Projektverzeichnis installieren, indem Sie den folgenden Befehl ausführen:

npm installiere pino-http

Überprüfen Sie für verschiedene Frameworks die Pino-Dokumentation.

Dieser Codeblock zeigt die Verwendung von Pino in einer Express-Anwendung:

konst ausdrücken = erfordern("äußern");
konst app = ausdrücken ();
konst Pino = erfordern('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // protokolliert Anfrage und Antwort
req.log.info('Root-Route') // protokolliert zusätzliche Informationen
res.send("Hallo Welt!");
});

app.listen(3000, () => Konsole.Protokoll(„App gestartet“.));

Dieser Code initialisiert Pino und registriert es als Middleware. Wenn Sie eine GET-Anfrage an die Root-Route (/) stellen, protokolliert Pino die Details Ihrer Anfrage und ihre Antwort an die Konsole.

4. Debuggen

Debug ist ein Protokollierungspaket für Node.js, das der Debugging-Technik des Node.js-Kerns nachempfunden ist. Es bietet eine einfache Protokollierungslösung, mit der Sie die Protokollierung selektiv aktivieren oder deaktivieren können, ohne den Code zu ändern, wodurch das Debuggen und Beheben von Problemen vereinfacht wird.

Mit Debug können Sie auch Protokoll-Namespaces festlegen, die Ihren Protokollen eine hierarchische Struktur basierend auf den Komponenten und Modulen in Ihrer Anwendung bieten, wodurch das Filtern und Durchsuchen erleichtert wird. Darüber hinaus bietet Debug verschiedene Protokollierungsebenen wie Fehler, Warnung und Info, mit denen Sie ihre Protokolle priorisieren und filtern können.

Mit diesem Befehl können Sie Debug als Abhängigkeit in Ihrem Projektverzeichnis installieren:

npm install debug

Dieser Code zeigt die Verwendung von Debug in einer Express-Anwendung:

konst ausdrücken = erfordern('äußern');

// Debug importieren und Namespace erstellen
konst debuggen = erfordern('debuggen')('myapp: server');

konst app = ausdrücken ();
konst port = process.env. HAFEN || 3000;

app.get('/', (req, res) => {
debuggen('Empfangene Anfrage für /');
res.send('Hallo Welt!');
});

app.listen (port, () => {
debuggen(`Server lauscht auf Port ${port}`);
});

Der Code erstellt einen Namespace, meineapp: Server. Dieser Namensraum unterscheidet Protokolle, die sich auf Ihre „Server”-Modul von denen, die anderen Modulen mit einem anderen Namespace in Ihrer Anwendung zugeordnet sind.

Führen Sie diesen Befehl aus, um das Debuggen zu starten:

DEBUG=myapp:* node server.js

Dieser obige Befehl gleicht jede Protokollnachricht mit einem Namensraum ab, der mit beginnt meine App:. Wenn Sie nur Protokolle sehen möchten, die sich auf Ihre beziehen Server Modul können Sie das einstellen DEBUGGEN Umgebungsvariable zu meineapp: Server.

Ein weiterer Vorteil von Debug ist seine Kompatibilität mit anderen Logging-Paketen wie Winston.

Auswählen eines Protokollierungspakets

Die Auswahl eines Protokollierungspakets ist eine wichtige Entscheidung, die sich erheblich auf die Effizienz und Effektivität Ihres Debugging-Prozesses auswirken kann. Es ist wichtig, Faktoren wie die Funktionen und Fähigkeiten des Pakets zu berücksichtigen, seine Kompatibilität mit Ihrer Programmiersprache und Entwicklungsumgebung sowie Benutzerfreundlichkeit und Aufbau.

Letztendlich hängt die Wahl des Protokollierungspakets von den spezifischen Bedürfnissen und Anforderungen Ihres Projekts ab.