Journalisation dans les applications JavaScript : bonnes pratiques — partie 3

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course
```html

Journalisation dans les applications JavaScript : meilleures pratiques — partie 3



Dans cette dernière partie de la série d'articles sur la journalisation en JavaScript, nous allons explorer des techniques et outils avancés qui vous aideront à mettre en place un système de surveillance fiable dans les applications Node.js. Ce contenu sera utile aussi bien pour l'apprentissage que pour une application pratique — du JavaScript pour débutants aux développeurs expérimentés. Nous aborderons la journalisation structurée, la rotation des logs, l'intégration avec des services externes et la sécurité.



1. Journalisation structurée dans Node.js



Un simple console.log() n'est pas adapté à un environnement de production. Utilisez plutôt des bibliothèques qui génèrent des logs au format JSON. Cela simplifie leur analyse et leur parsing.



Exemple avec la bibliothèque Winston

const 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' }) ]});

// Utilisationlogger.info('Utilisateur enregistré', { userId: 123, email: 'user@example.com' });logger.error('Erreur de base de données', { error: err.message, stack: err.stack });


Cette approche permet de filtrer facilement les logs par niveau, temps et contexte. C'est particulièrement important lors de la programmation de microservices.



2. Rotation des logs et gestion de la taille



Les logs peuvent rapidement remplir le disque. Utilisez la rotation — l'archivage automatique des anciens fichiers. Dans Node.js, cela se fait facilement avec le module winston-daily-rotate-file.



Exemple de configuration de rotation

const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({ filename: 'logs/application-%DATE%.log', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d'});

const logger = winston.createLogger({ transports: [transport]});


Cela garantit que les logs ne dépassent pas 20 Mo par jour et sont conservés pendant 14 jours.



3. Intégration avec des services de surveillance externes



Pour une collecte centralisée des logs, utilisez des services comme Logstash, Datadog ou Sentry. En JavaScript, cela se fait via les transports Winston.



Exemple d'envoi de logs vers Logstash

const { LogstashTransport } = require('winston-logstash-transport');

const logger = winston.createLogger({ transports: [ new LogstashTransport({ host: 'logstash.example.com', port: 5000 }) ]});


Ainsi, vous pourrez analyser les logs en temps réel, créer des tableaux de bord et des alertes.



4. Sécurité de la journalisation



Ne journalisez jamais de données sensibles : mots de passe, jetons, numéros de carte de crédit. Utilisez des filtres ou des fonctions de masquage.



Exemple de masquage de données

function maskSensitive(obj) {  const masked = { ...obj };  if (masked.password) masked.password = '***';  if (masked.token) masked.token = '***';  return masked;}

logger.info('Requête utilisateur', maskSensitive(req.body));


Cela vous protégera contre les fuites et vous aidera à respecter le RGPD.



Conclusion



Dans cette partie, nous avons examiné les pratiques clés de journalisation dans les applications JavaScript sur Node.js : logs structurés, rotation, intégration avec des systèmes externes et sécurité. Ces techniques vous aideront à créer des systèmes fiables et faciles à maintenir. Pour l'apprentissage, nous recommandons de commencer avec Winston et d'introduire progressivement des outils plus complexes. Le JavaScript pour débutants peut sembler difficile, mais la pratique fera de vous un professionnel. Bonne chance dans la programmation !

```

Blogs

Book Recommendations