Registro en aplicaciones JavaScript: mejores prácticas — parte 3

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Registro en aplicaciones JavaScript: mejores prácticas — parte 3



En esta parte final de la serie de artículos sobre registro en JavaScript, veremos técnicas y herramientas avanzadas que le ayudarán a construir un sistema de monitoreo confiable en aplicaciones Node.js. El material será útil tanto para el aprendizaje como para la aplicación práctica, desde JavaScript para principiantes hasta desarrolladores experimentados. Discutiremos el registro estructurado, la rotación de registros, la integración con servicios externos y la seguridad.



1. Registro estructurado en Node.js



El console.log() común no es adecuado para un entorno de producción. En su lugar, use bibliotecas que generen registros JSON. Esto simplifica su análisis y procesamiento.



Ejemplo con la biblioteca Winston

const winston = require('winston');

const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ]});

// Usologger.info('Usuario registrado', { userId: 123, email: 'user@example.com' });logger.error('Error de base de datos', { error: err.message, stack: err.stack });


Este enfoque permite filtrar fácilmente los registros por nivel, tiempo y contexto. Esto es especialmente importante en la programación de microservicios.



2. Rotación de registros y gestión del tamaño



Los registros pueden llenar rápidamente el disco. Use la rotación: archivado automático de archivos antiguos. En Node.js, esto se implementa fácilmente con el módulo winston-daily-rotate-file.



Ejemplo de configuración de rotación

const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({ filename: 'logs/application-%DATE%.log', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d'});

const logger = winston.createLogger({ transports: [transport]});


Esto garantiza que los registros no ocupen más de 20 MB por día y se almacenen durante 14 días.



3. Integración con servicios de monitoreo externos



Para la recolección centralizada de registros, use servicios como Logstash, Datadog o Sentry. En JavaScript, esto se hace a través de los transports de Winston.



Ejemplo de envío de registros a Logstash

const { LogstashTransport } = require('winston-logstash-transport');

const logger = winston.createLogger({ transports: [ new LogstashTransport({ host: 'logstash.example.com', port: 5000 }) ]});


De esta manera, podrá analizar los registros en tiempo real, crear paneles y alertas.



4. Seguridad en el registro



Nunca registre datos sensibles: contraseñas, tokens, números de tarjetas de crédito. Use filtros o funciones de enmascaramiento.



Ejemplo de enmascaramiento de datos

function maskSensitive(obj) {  const masked = { ...obj };  if (masked.password) masked.password = '***';  if (masked.token) masked.token = '***';  return masked;}

logger.info('Solicitud de usuario', maskSensitive(req.body));


Esto lo protegerá contra filtraciones y ayudará a cumplir con el GDPR.



Conclusión



En esta parte, hemos cubierto las prácticas clave de registro en aplicaciones JavaScript en Node.js: registros estructurados, rotación, integración con sistemas externos y seguridad. Estas técnicas le ayudarán a crear sistemas confiables y fáciles de mantener. Para el aprendizaje, recomendamos comenzar con Winston e implementar gradualmente herramientas más complejas. JavaScript para principiantes puede parecer difícil, pero la práctica lo hará un profesional. ¡Buena suerte en la programación!

Blogs

Book Recommendations