E2 — Analizzatore di log (filtri e contatori semplici)
Analizzi un array in memoria di righe di log, filtri per livello o parola chiave e conti gli eventi con Map. Mantieni il codice breve e leggibile.
E2 — Analizzatore di log (filtri e contatori semplici) è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa costruiremo
Obiettivo: analizzare i log in memoria.
- Rappresentare le righe come piccole stringhe
- Filtrare per livello o parola chiave
- Contare con una Map
- Mantenere le funzioni brevi e chiare

Dati + parser
Crei una struttura semplice per ogni riga: ora, livello, testo. È sufficiente per filtri e contatori.
// 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]));
Basi del filtraggio
Scriva piccole funzioni di filtro per ogni domanda comune. La brevità e la leggibilità sono preferibili all'astuzia.
// 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);
Contatori con Map
Utilizzi una Map per i contatori: aggiornamenti rapidi e letture semplici per ogni chiave.
// 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"));
Esempio Top-N
Esegua una piccola estrazione di stringhe e definisca l'ordine usando una Map dei conteggi. Mantenga semplici le regole di parsing.
// 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));
Indicazioni per principianti
Suggerimenti:
- Crei prima un piccolo parser.
- Scriva piccoli helper di filtro per ogni domanda.
- Conti con una Map.
- Preferisca stringhe semplici e cicli chiari per i principianti.

Quiz sul conteggio con Map
Verifica rapida: struttura per il conteggio.

Riepilogo
Riepilogo: esegua il parsing in una struttura minima, filtri per livello/parola chiave e conti con una Map. Mantenga ogni helper breve e ovvio.

Domande Frequenti
La lezione «E2 — Analizzatore di log (filtri e contatori semplici)» è gratuita?
Sì — il testo completo di «E2 — Analizzatore di log (filtri e contatori semplici)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa imparerò in «E2 — Analizzatore di log (filtri e contatori semplici)»?
Analizzi un array in memoria di righe di log, filtri per livello o parola chiave e conti gli eventi con Map. Mantieni il codice breve e leggibile. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «E2 — Analizzatore di log (filtri e contatori semplici)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- E1 — Valutatore di espressioni (parte 1: + e - da sinistra a destra)
- E2 — Analizzatore di log (filtri e contatori semplici)
- E3 — Pool/coda di Promise (concorrenza asincrona)