Introduction
L'agrégation de logs consiste à collecter les journaux d'événements de différentes sources pour les centraliser. Cela facilite le débogage et la surveillance des applications. En 2026, les outils simples comme Winston permettent une mise en œuvre rapide même pour les débutants. Ce tutoriel vous montre comment implémenter une solution fonctionnelle en Node.js.
Prérequis
- Node.js 20+
- Connaissances basiques de JavaScript
- Un éditeur de code (VS Code recommandé)
Initialisation du projet
mkdir log-aggregation-tutorial
cd log-aggregation-tutorial
npm init -y
npm install winstonCette commande crée le dossier du projet et installe Winston, la bibliothèque de logging la plus utilisée pour Node.js. Elle permet de générer des logs structurés facilement.
Configuration du logger
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/combined.log' }),
new winston.transports.Console()
]
});
module.exports = logger;Ce fichier configure Winston pour écrire les logs au format JSON dans un fichier combiné et les afficher en console. Le niveau info capture les messages importants.
Utilisation dans l'application
const logger = require('./logger');
logger.info('Application démarrée');
logger.error('Une erreur est survenue', { error: 'Exemple' });
console.log('Logs générés avec succès');L'application importe le logger et émet des logs de différents niveaux. Les logs sont automatiquement écrits dans le fichier combiné pour l'agrégation.
Script d'agrégation simple
const fs = require('fs');
const path = require('path');
const logDir = path.join(__dirname, 'logs');
const outputFile = path.join(__dirname, 'aggregated.log');
let aggregated = '';
fs.readdirSync(logDir).forEach(file => {
if (file.endsWith('.log')) {
const content = fs.readFileSync(path.join(logDir, file), 'utf8');
aggregated += content + '\n';
}
});
fs.writeFileSync(outputFile, aggregated);
console.log('Logs agrégés dans aggregated.log');Ce script lit tous les fichiers logs du dossier et les concatène dans un fichier unique. Il fournit une agrégation basique sans outil externe.
Exécution et test
node app.js
node aggregate.js
cat aggregated.logExécutez ces commandes pour générer les logs puis les agréger. Le fichier final contient tous les événements centralisés.
Bonnes pratiques
- Toujours structurer les logs en JSON pour faciliter le parsing
- Utiliser des niveaux de log cohérents (info, warn, error)
- Rotation des fichiers logs pour éviter les fichiers trop volumineux
- Centraliser les logs dans un dossier dédié
- Ajouter des métadonnées contextuelles aux logs
Erreurs courantes à éviter
- Oublier de créer le dossier logs avant l'écriture
- Utiliser des logs non structurés (texte brut)
- Ne pas gérer les exceptions dans le code de logging
- Ignorer la rotation des fichiers qui peut saturer le disque
Pour aller plus loin
Découvrez nos formations Learni pour approfondir l'observabilité et les outils avancés comme Loki ou ELK.