- Publicado el
Tipos de Logs en aplicaciones 📊
4 min read
Los logs son esenciales para entender qué está pasando dentro de una aplicación. Son la base para el debugging, monitoreo, seguridad y auditoría.
1. ❌ Error Logs
Registran fallos críticos o excepciones en la aplicación.
🧠 ¿Qué incluyen?
- Mensaje de error
- Stack trace
- Contexto (usuario, endpoint, payload)
🛠 Ejemplo
try {
throw new Error("Error en la base de datos");
} catch (err) {
logger.error("DB Error", {
message: err.message,
stack: err.stack,
});
}
🚨 Cuándo usarlo
- Fallos del sistema
- Errores inesperados
- Problemas en producción
2. 🌐 Access Logs
Registran todas las peticiones que llegan al sistema.
🧠 ¿Qué incluyen?
- IP del cliente
- Método HTTP
- Ruta
- Código de respuesta
- Tiempo de respuesta
🛠 Ejemplo (Express + Morgan)
app.use(require("morgan")("combined"));
📊 Uso
- Monitoreo de tráfico
- Análisis de uso
- Seguridad
3. 🐛 Debug Logs
Información detallada para desarrollo y debugging.
🧠 Concepto
Logs muy verbosos que ayudan a entender el flujo interno.
🛠 Ejemplo
logger.debug("Usuario obtenido", {
userId: id,
data: user,
});
⚠️ Importante
- No usar en producción (o con cuidado)
- Puede afectar rendimiento
4. ⚠️ Warning Logs
Alertan sobre posibles problemas que aún no rompen la app.
🧠 Ejemplos
- Uso de API deprecada
- Datos inconsistentes
- Configuración incorrecta
🛠 Ejemplo
if (!user.email) {
logger.warn("Usuario sin email", { userId: user.id });
}
🎯 Objetivo
Prevenir errores futuros
5. ℹ️ Info Logs
Eventos normales dentro del sistema.
🧠 Ejemplos
- Login de usuario
- Inicio de servidor
- Acciones importantes
🛠 Ejemplo
logger.info("Usuario logueado", {
userId: user.id,
timestamp: new Date(),
});
✅ Uso
- Seguimiento de comportamiento
- Métricas de negocio
6. 🧾 Audit Logs
Registro detallado de acciones críticas para auditoría.
🧠 ¿Qué incluyen?
- Quién hizo la acción
- Qué hizo
- Cuándo
- Desde dónde
🛠 Ejemplo
logger.info("Cambio de contraseña", {
userId: user.id,
ip: req.ip,
action: "password_change",
});
🔐 Importancia
- Seguridad
- Cumplimiento (compliance)
- Trazabilidad
⚖️ Niveles de logging (jerarquía)
ERROR > WARN > INFO > DEBUG
🧠 Buenas prácticas
- Usa niveles correctamente (no todo es
error) - No registres datos sensibles (passwords, tokens)
- Usa formato estructurado (JSON)
- Centraliza logs (ELK, Datadog, etc.)
- Añade contexto (userId, requestId)
- Implementa rotación de logs
🛠 Ejemplo completo (Winston)
const winston = require("winston");
const logger = winston.createLogger({
level: "info",
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: "app.log" }),
],
});
🏁 Resumen
Un buen sistema de logs te permite:
- 🔍 Detectar errores rápidamente
- 📊 Entender el comportamiento del sistema
- 🔐 Mejorar la seguridad
- 🚀 Tomar decisiones basadas en datos
