E2: analizador de logs (filtros y contadores sencillos)
Analice un array en memoria de líneas de log, filtre por nivel o palabra clave y cuente eventos con Map. Manténgalo pequeño y fácil de leer.
E2: analizador de logs (filtros y contadores sencillos) es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.
Lo que construiremos
Objetivo: analizar registros en memoria.
- Represente las líneas como cadenas pequeñas
- Filtre por nivel o palabra clave
- Cuente con un Map
- Mantenga las funciones breves y claras

Datos y analizador
Cree una estructura sencilla para cada línea: hora, nivel y texto. Es suficiente para los filtros y contadores.
// 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]));
Fundamentos del filtrado
Escriba pequeñas funciones de filtrado para cada pregunta habitual. Lo breve y legible es mejor que lo ingenioso.
// 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);
Contadores con Map
Use un Map para los contadores: permite actualizaciones rápidas y lecturas sencillas por clave.
// 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"));
Ejemplo de los N primeros
Haga una pequeña extracción de cadenas y clasifique los resultados con un Map de conteo. Mantenga sencillas las reglas de análisis.
// 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));
Orientación para principiantes
Consejos:
- Cree primero un analizador pequeño.
- Escriba pequeños ayudantes de filtrado para cada pregunta.
- Cuente con un Map.
- Prefiera cadenas sencillas y bucles claros para principiantes.

Cuestionario sobre el conteo con Map
Comprobación rápida: estructura para contar.

Resumen
Resumen: analice los datos para obtener una estructura pequeña, filtre por nivel o palabra clave y cuente con un Map. Mantenga cada ayudante breve y evidente.

Preguntas frecuentes
¿La lección «E2: analizador de logs (filtros y contadores sencillos)» es gratis?
Sí — el texto completo de «E2: analizador de logs (filtros y contadores sencillos)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «E2: analizador de logs (filtros y contadores sencillos)»?
Analice un array en memoria de líneas de log, filtre por nivel o palabra clave y cuente eventos con Map. Manténgalo pequeño y fácil de leer. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «E2: analizador de logs (filtros y contadores sencillos)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- E1: evaluador de expresiones (parte 1: + y - de izquierda a derecha)
- E2: analizador de logs (filtros y contadores sencillos)
- E3: pool/cola de Promises (concurrencia asíncrona)