Maison  >  Article  >  interface Web  >  Meilleures pratiques de journalisation pour votre application Node.js

Meilleures pratiques de journalisation pour votre application Node.js

WBOY
WBOYoriginal
2024-08-10 06:38:22670parcourir

Logging Best Practices For Your Node.js App

En tant que développeur Node.js, la journalisation est à peu près tout ce qui concerne le débogage, la surveillance et la maintenance de vos applications. Mais utilisez-vous les meilleures pratiques en matière de journalisation ? Explorons quelques techniques de journalisation qui peuvent faire passer vos applications Node.js au niveau supérieur.

Pour en savoir plus, vous pouvez consulter l'article de blog complet.

1. Winston : le couteau suisse de l’exploitation forestière

? Outil : Winston
? Description : Une bibliothèque de journalisation polyvalente pour Node.js
? Caractéristiques principales :

  • Plusieurs options de transport (console, fichier, base de données)
  • Niveaux de journalisation personnalisables
  • Prend en charge la journalisation dans différents formats (JSON, texte brut)
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 : middleware d'enregistrement de requêtes HTTP

? Outil : Morgan
? Description : simplifie la journalisation des requêtes HTTP dans Express.js
? Caractéristiques principales :

  • Formats de journalisation prédéfinis
  • Prise en charge des jetons personnalisés
  • Intégration facile avec Express.js
javascriptCopyconst express = require('express');
const morgan = require('morgan');

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

3. Bunyan : journalisation JSON pour Node.js

? Outil : Bunyan
? Description : Journalisation JSON structurée pour les applications Node.js
? Caractéristiques principales :

  • Format de journal JSON par défaut
  • Prend en charge les enfants enregistreurs
  • CLI intégrée pour afficher les journaux
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

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

4. Pino : enregistreur Node.js ultra rapide

? Outil : Pino
? Description : journalisation à faible surcharge avec sortie JSON
? Caractéristiques principales :

  • Performances extrêmement rapides
  • Rotation automatique des journaux
  • Prend en charge les enfants enregistreurs
javascriptCopyconst pino = require('pino');
const logger = pino();

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

5. debug : petit utilitaire de débogage

? Outil : débogage
? Description : Petit utilitaire de débogage pour Node.js
? Caractéristiques principales :

  • Léger et simple à utiliser
  • Débogage sélectif avec espaces de noms
  • Prise en charge du navigateur
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js : journalisation flexible pour JavaScript

? Outil : Log4js
? Description : Une conversion du framework log4j en JavaScript
? Caractéristiques principales :

  • Niveaux de journalisation hiérarchique
  • Appendeurs de sortie multiples
  • Mises en page configurables
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 et Kibana (ELK Stack)

? Outil : ELK Stack
? Description : Une combinaison puissante pour la gestion et l'analyse des journaux
? Caractéristiques principales :

  • Journalisation centralisée
  • Analyse des journaux en temps réel
  • Visualisations et tableaux de bord
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 : suivi des erreurs et surveillance des performances

? Outil : Sentinelle
? Description : Suivi des erreurs en temps réel et surveillance des performances
? Caractéristiques principales :

  • Capture automatique des erreurs
  • Suivi des versions
  • Suivi des performances
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0" });

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

9. New Relic : surveillance des performances des applications

? Outil : Nouvelle relique
? Description : Surveillance complète des performances des applications
? Caractéristiques principales :

  • Mesures de performances en temps réel
  • Analyse des erreurs
  • Instrumentation personnalisée
javascriptCopyconst newrelic = require('newrelic');

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

10. Loggly : gestion des journaux basée sur le cloud

? Outil : Loggly
? Description : Service de gestion et d'analyse des journaux basé sur le cloud
? Caractéristiques principales :

  • Gestion centralisée des journaux
  • Recherche et analyse de journaux en temps réel
  • Tableaux de bord et alertes personnalisés
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', "Hello World from Node.js!");

Astuce bonus : journalisation structurée

Quel que soit l'outil que vous choisissez, la mise en œuvre d'une journalisation structurée peut considérablement améliorer vos capacités d'analyse des journaux :

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

En utilisant ces outils et pratiques supplémentaires, vous disposerez d'une stratégie de journalisation complète qui couvre tout, du débogage de base à la surveillance avancée des performances des applications. N'oubliez pas que la clé d'une journalisation efficace consiste à choisir les outils adaptés à vos besoins spécifiques et à appliquer systématiquement les meilleures pratiques dans l'ensemble de votre base de code.

Si vous avez besoin d'aide pour déboguer votre application Web, consultez https://alerty.ai pour en savoir plus sur la surveillance simple du frontend.

Bonne journalisation et que vos applications Node.js fonctionnent correctement ! ??

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn