„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 > Best Practices für die Protokollierung Ihrer Node.js-App

Best Practices für die Protokollierung Ihrer Node.js-App

Veröffentlicht am 23.08.2024
Durchsuche:573

Logging Best Practices For Your Node.js App

Als Node.js-Entwickler ist die Protokollierung so ziemlich alles, wenn es um das Debuggen, Überwachen und Warten Ihrer Anwendungen geht. Aber verwenden Sie die Best Practices für die Protokollierung? Lassen Sie uns einige Protokollierungstechniken erkunden, die Ihre Node.js-Apps auf die nächste Stufe heben können.

Um mehr zu erfahren, können Sie sich den vollständigen Blogbeitrag ansehen.

1. Winston: Das Schweizer Taschenmesser des Holzeinschlags

? Werkzeug: Winston
? Beschreibung: Eine vielseitige Protokollierungsbibliothek für Node.js
? Hauptmerkmale:

  • Mehrere Transportoptionen (Konsole, Datei, Datenbank)
  • Anpassbare Protokollebenen
  • Unterstützt die Protokollierung in verschiedenen Formaten (JSON, Nur-Text)
javascriptCopyconst 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' })
  ]
});

2. Morgan: HTTP Request Logger Middleware

? Werkzeug: Morgan
? Beschreibung: Vereinfacht die Protokollierung von HTTP-Anfragen in Express.js
? Hauptmerkmale:

  • Vordefinierte Protokollierungsformate
  • Benutzerdefinierte Token-Unterstützung
  • Einfache Integration mit Express.js
javascriptCopyconst express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

3. Bunyan: JSON-Protokollierung für Node.js

? Werkzeug: Bunyan
? Beschreibung: Strukturierte JSON-Protokollierung für Node.js-Anwendungen
? Hauptmerkmale:

  • JSON-Protokollformat standardmäßig
  • Unterstützt untergeordnete Logger
  • Integrierte CLI zum Anzeigen von Protokollen
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

log.info("Hi");
log.warn({lang: 'fr'}, "Au revoir");

4. Pino: Superschneller Node.js Logger

? Werkzeug: Pino
? Beschreibung: Protokollierung mit geringem Overhead mit JSON-Ausgabe
? Hauptmerkmale:

  • Extrem schnelle Leistung
  • Automatische Protokollrotation
  • Unterstützt untergeordnete Logger
javascriptCopyconst pino = require('pino');
const logger = pino();

logger.info('hello world');
logger.error('this is at error level');

5. debug: Winziges Debugging-Dienstprogramm

? Tool: debug
? Beschreibung: Kleines Debugging-Dienstprogramm für Node.js
? Hauptmerkmale:

  • Leicht und einfach zu verwenden
  • Selektives Debuggen mit Namespaces
  • Browser-Unterstützung
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js: Flexible Protokollierung für JavaScript

? Tool: Log4js
? Beschreibung: Eine Konvertierung des log4j-Frameworks in JavaScript
? Hauptmerkmale:

  • Hierarchische Protokollierungsebenen
  • Mehrere Ausgabe-Appender
  • Konfigurierbare Layouts
javascriptCopyconst log4js = require("log4js");
log4js.configure({
  appenders: { cheese: { type: "file", filename: "cheese.log" } },
  categories: { default: { appenders: ["cheese"], level: "error" } }
});

const logger = log4js.getLogger("cheese");
logger.error("Cheese is too ripe!");

7. Elasticsearch, Logstash und Kibana (ELK Stack)

? Werkzeug: ELK Stack
? Beschreibung: Eine leistungsstarke Kombination für Protokollverwaltung und -analyse
? Hauptmerkmale:

  • Zentralisierte Protokollierung
  • Echtzeit-Protokollanalyse
  • Visualisierungen und Dashboards
javascriptCopyconst winston = require('winston');
const Elasticsearch = require('winston-elasticsearch');

const esTransportOpts = {
  level: 'info',
  clientOpts: { node: 'http://localhost:9200' }
};
const logger = winston.createLogger({
  transports: [
    new Elasticsearch(esTransportOpts)
  ]
});

8. Sentry: Fehlerverfolgung und Leistungsüberwachung

? Werkzeug: Wachposten
? Beschreibung: Fehlerverfolgung und Leistungsüberwachung in Echtzeit
? Hauptmerkmale:

  • Automatische Fehlererfassung
  • Release-Tracking
  • Leistungsüberwachung
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://[email protected]/0" });

try {
  someFunction();
} catch (e) {
  Sentry.captureException(e);
}

9. Neues Relikt: Überwachung der Anwendungsleistung

? Werkzeug: Neues Relikt
? Beschreibung: Umfassende Überwachung der Anwendungsleistung
? Hauptmerkmale:

  • Echtzeit-Leistungsmetriken
  • Fehleranalyse
  • Benutzerdefinierte Instrumentierung
javascriptCopyconst newrelic = require('newrelic');

newrelic.setTransactionName('myCustomTransaction');
// Your application code here

10. Loggly: Cloudbasiertes Protokollmanagement

? Werkzeug: Loggly
? Beschreibung: Cloudbasierter Protokollverwaltungs- und Analysedienst
? Hauptmerkmale:

  • Zentralisierte Protokollverwaltung
  • Echtzeit-Protokollsuche und -Analyse
  • Benutzerdefinierte Dashboards und Warnungen
javascriptCopyconst winston = require('winston');
const { Loggly } = require('winston-loggly-bulk');

winston.add(new Loggly({
    token: "YOUR-TOKEN",
    subdomain: "YOUR-SUBDOMAIN",
    tags: ["Winston-NodeJS"],
    json: true
}));

winston.log('info', "Hallo Welt von Node.js!");

Bonus-Tipp: Strukturierte Protokollierung

Unabhängig vom gewählten Tool kann die Implementierung einer strukturierten Protokollierung Ihre Protokollanalysefunktionen erheblich verbessern:

javascriptCopylogger.info({
  event: 'user_login',
  userId: user.id,
  timestamp: new Date().toISOString(),
  ipAddress: req.ip
});

Durch die Verwendung dieser zusätzlichen Tools und Vorgehensweisen verfügen Sie über eine umfassende Protokollierungsstrategie, die alles vom einfachen Debuggen bis zur erweiterten Überwachung der Anwendungsleistung abdeckt. Denken Sie daran, dass der Schlüssel zu einer effektiven Protokollierung in der Auswahl der richtigen Tools für Ihre spezifischen Anforderungen und der konsequenten Anwendung von Best Practices in Ihrer gesamten Codebasis liegt.

Wenn Sie Hilfe beim Debuggen Ihrer Web-App benötigen, schauen Sie sich https://alerty.ai an, um mehr über die einfache Frontend-Überwachung zu erfahren.

Viel Spaß beim Protokollieren und mögen Ihre Node.js-Apps reibungslos laufen! ??

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/alertyai/logging-best-practices-for-your-nodejs-app-4o9k?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
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