E2 — Analyseur de journaux (filtres et compteurs simples)
Analysez un tableau de lignes de journal en mémoire, filtrez par niveau ou mot-clé et comptez les événements avec Map. Gardez le code court et lisible
E2 — Analyseur de journaux (filtres et compteurs simples) est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 3 leçons au total.
Ce que nous allons construire
Objectif : analyser des journaux en mémoire.
- Représenter les lignes sous forme de petites chaînes
- Filtrer selon le level ou un mot-clé
- Compter avec une Map
- Garder des fonctions courtes et claires

Données et analyseur
Créez une structure simple pour chaque ligne : time, level, texte. Cela suffit pour les filtres et les compteurs.
// Simulated log lines (time level message)
const LINES = [
"10:00 INFO Start app",
"10:01 WARN Low memory",
"10:02 INFO User login /home",
"10:03 ERROR DB timeout",
"10:04 INFO User login /products",
"10:05 ERROR Network fail",
"10:06 WARN Retry request"
];
// Tiny parser: returns { time, level, text }
function parseLine(line) {
// split on spaces, compact, then rebuild pieces
const parts = line.trim().split(/\\s+/);
if (parts.length < 3) return null;
const time = parts[0];
const level = parts[1];
const text = parts.slice(2).join(" ");
return { time: time, level: level, text: text };
}
console.log("parsed:", parseLine(LINES[2]));
Bases du filtrage
Écrivez de petites fonctions de filtrage pour chaque question courante. Un code court et lisible vaut mieux qu’un code astucieux.
// Filter by level or by keyword (case-sensitive for simplicity)
function filterByLevel(lines, want) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.level === want) out.push(p);
}
return out;
}
function filterByKeyword(lines, word) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.text.indexOf(word) !== -1) out.push(p);
}
return out;
}
console.log("ERRORs:", filterByLevel(LINES, "ERROR").length);
console.log("login :", filterByKeyword(LINES, "login").length);
Compteurs avec Map
Utilisez une Map pour les compteurs : les mises à jour sont rapides et la lecture de chaque clé est simple.
// Count how many lines per level
function countByLevel(lines) {
const counts = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const old = counts.get(p.level) || 0;
counts.set(p.level, old + 1);
}
return counts;
}
const c = countByLevel(LINES);
console.log("INFO :", c.get("INFO"));
console.log("WARN :", c.get("WARN"));
console.log("ERROR:", c.get("ERROR"));
Exemple du Top-N
Effectuez une petite extraction de chaînes et classez les résultats avec une Map de comptage. Gardez les règles d’analyse simples.
// Extract a path after "User login " and rank by frequency
function topLoginPaths(lines, k) {
const freq = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const mark = "User login ";
const idx = p.text.indexOf(mark);
if (idx !== -1) {
const path = p.text.slice(idx + mark.length).trim();
const old = freq.get(path) || 0;
freq.set(path, old + 1);
}
}
// turn into array and sort descending by count
const arr = Array.from(freq.entries());
arr.sort(function (a, b) { return b[1] - a[1]; });
return arr.slice(0, k);
}
console.log("top paths:", topLoginPaths(LINES, 3));
Conseils pour débuter
Conseils :
- Commencez par un petit analyseur.
- Écrivez de petits assistants de filtrage pour chaque question.
- Comptez avec une Map.
- Préférez des chaînes simples et des boucles claires pour les débutants.

Quiz sur le comptage avec Map
Vérification rapide : structure de comptage.

Récapitulatif
Récapitulatif : analysez chaque ligne dans une structure simple, filtrez selon le level ou le mot-clé et comptez avec une Map. Gardez chaque assistant court et évident.

Questions Fréquemment Posées
La leçon « E2 — Analyseur de journaux (filtres et compteurs simples) » est-elle gratuite ?
Oui — le texte complet de « E2 — Analyseur de journaux (filtres et compteurs simples) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « E2 — Analyseur de journaux (filtres et compteurs simples) » ?
Analysez un tableau de lignes de journal en mémoire, filtrez par niveau ou mot-clé et comptez les événements avec Map. Gardez le code court et lisible Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer JavaScript Academy ?
Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 3.
Combien de temps prend la leçon « E2 — Analyseur de journaux (filtres et compteurs simples) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?
Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- E1 — Évaluateur d’expressions (1re partie : + et - de gauche à droite)
- E2 — Analyseur de journaux (filtres et compteurs simples)
- E3 — Réservoir ou file de promesses (concurrence asynchrone)