Exercice : "Analyseur de Journal d'Erreurs"
Conditions d’achèvement
Exercice : "Analyseur de Journal d'Erreurs"
Objectif : Créer un script Node.js qui analyse un fichier de journal contenant des messages d'erreur et extrait des informations spécifiques. L'exercice mettra en évidence la gestion des erreurs de lecture de fichiers, l'utilisation de try-catch pour les opérations de parsing, et la capture des erreurs non gérées.
Partie 1: Lecture et Analyse de Fichier
-
Création du fichier de journal :
- Créez un fichier texte
error.logqui contient des lignes de journal simulées, certaines avec des erreurs formatées de manière incorrecte.
- Créez un fichier texte
-
Script de lecture de fichier :
- Écrivez un script
logAnalyzer.jsqui lit le fichiererror.log. - Utilisez le module
fspour lire le fichier de manière asynchrone. - Pour chaque ligne, essayez de parser l'erreur et de la logger dans la console.
- Écrivez un script
Partie 2: Gestion des Exceptions
- Utilisation de Try-Catch :
- Entourez le code de parsing avec un bloc try-catch pour gérer les erreurs de formatage.
- Dans le bloc
catch, loggez un message indiquant une erreur de parsing et continuez l'analyse des autres lignes.
Partie 3: Gestion des Erreurs Globales
-
Gestion des événements
uncaughtException:- Ajoutez un gestionnaire pour
process.on('uncaughtException', handler). - Dans le gestionnaire, loggez l'erreur et terminez le processus.
- Ajoutez un gestionnaire pour
-
Gestion des événements
unhandledRejection:- Ajoutez un gestionnaire pour
process.on('unhandledRejection', handler). - Loggez l'erreur et terminez le processus.
- Ajoutez un gestionnaire pour
Partie 4: Défi supplémentaire (Optionnel)
- Amélioration de l'analyseur :
- Ajoutez la fonctionnalité de générer un rapport qui résume les erreurs trouvées, leur fréquence et des suggestions pour les résoudre.
- Écrivez le rapport dans un nouveau fichier
error_summary.log.
Exemple de contenu pour error.log :
Error: Missing parameter in configuration.
Warning: Deprecated method used at line 47.
Error: Invalid type provided for variable "age".
Info: Server started at port 3000.
Error: Unexpected token in JSON at position 57.
Exemple de code pour logAnalyzer.js :
const fs = require('fs');
fs.readFile('error.log', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
const lines = data.split('\n');
lines.forEach((line, index) => {
try {
if (line.startsWith('Error:')) {
// Simulate parsing logic that could throw
if (line.includes('Unexpected token')) {
throw new SyntaxError('Invalid JSON format');
}
console.log(`Error found at line ${index + 1}: ${line}`);
}
} catch (e) {
console.error(`Parsing error at line ${index + 1}:`, e.message);
}
});
});
process.on('uncaughtException', (err) => {
console.error('Unhandled exception:', err);
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled rejection at:', promise, 'reason:', reason);
process.exit(1);
});
Instructions pour l'étudiant :
- Complétez le script pour qu'il analyse correctement le fichier
error.log. - Assurez-vous que votre script gère les erreurs de parsing sans s'arrêter.
- Testez votre script avec des erreurs simulées pour voir comment il gère
uncaughtExceptionetunhandledRejection. - (Optionnel) Générez un rapport d'erreur et écrivez-le dans un fichier.
Cet exercice aidera les étudiants à comprendre comment gérer les erreurs et les exceptions de manière robuste dans leurs applications Node.js.
Modifié le: vendredi 3 novembre 2023, 09:20