"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Meilleures pratiques de journalisation pour votre application Node.js

Meilleures pratiques de journalisation pour votre application Node.js

Publié le 2024-08-23
Parcourir:956

Logging Best Practices For Your Node.js App

En tant que développeur Node.js, la journalisation est à peu près essentielle lorsqu'il s'agit de débogage, de surveillance et de 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
? Principales caractéristiques :

  • 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
? Principales caractéristiques :

  • 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
? Principales caractéristiques :

  • Format de journal JSON par défaut
  • Prend en charge les enregistreurs enfants
  • 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
? Principales caractéristiques :

  • Performances extrêmement rapides
  • Rotation automatique des journaux
  • Prend en charge les enregistreurs enfants
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
? Principales caractéristiques :

  • Léger et simple à utiliser
  • Débogage sélectif avec des 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
? Principales caractéristiques :

  • Niveaux de journalisation hiérarchique
  • Appendeurs de sortie multiples
  • Mise en page configurable
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 : pile ELK
? Description : Une combinaison puissante pour la gestion et l'analyse des journaux
? Principales caractéristiques :

  • 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 et surveillance des performances en temps réel
? Principales caractéristiques :

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

Sentry.init({ dsn: "https://[email protected]/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
? Principales caractéristiques :

  • 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
? Principales caractéristiques :

  • 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 ! ??

Déclaration de sortie Cet article est reproduit sur : https://dev.to/alertyai/logging-best-practices-for-your-nodejs-app-4o9k?1 En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3