Registro para TypeScript: las mejores soluciones y herramientas
El registro es una parte críticamente importante de cualquier aplicación en TypeScript. Sin un sistema de registro de calidad, es imposible depurar el código de manera efectiva, analizar errores en producción y rastrear el comportamiento del sistema. En este artículo, revisaremos las mejores bibliotecas para el registro en TypeScript, compararemos sus capacidades y proporcionaremos ejemplos prácticos de uso.
¿Por qué es necesario el registro en TypeScript?
TypeScript, al ser una extensión de JavaScript, hereda todas las características de trabajar con asincronía y el modelo de eventos. Esto hace que el registro sea especialmente importante para:
- Depuración — comprender la secuencia de ejecución de operaciones asíncronas
- Monitoreo — rastrear el estado de la aplicación en tiempo real
- Análisis de errores — información detallada sobre fallos y excepciones
- Auditoría — registro de acciones de usuarios y eventos del sistema
- Rendimiento — medición del tiempo de ejecución de operaciones críticas
Top 4 bibliotecas para el registro en TypeScript
1. Winston — elección universal
Winston es la biblioteca más popular para el registro en Node.js con excelente soporte para TypeScript. Proporciona un sistema flexible de transportes (a dónde enviar los logs) y niveles de registro.
Instalación:
npm install winstonnpm install @types/winston --save-devEjemplo de configuración básica:
import winston from 'winston';
const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ]});
// Uso con TypeScriptlogger.info('Servidor iniciado', { port: 3000 });logger.error('Error de conexión a la BD', { error: err.message });2. Pino — registrador ultrarrápido
Pino es el registrador más eficiente para Node.js. Está optimizado para un impacto mínimo en el rendimiento de la aplicación y es ideal para sistemas de alta carga.
Instalación:
npm install pinonpm install @types/pino --save-devEjemplo de uso con TypeScript:
import pino from 'pino';
const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true, translateTime: 'SYS:standard' } }});
// Registro tipadointerface UserAction { userId: string; action: string; timestamp: Date;}
logger.info({ type: 'user_action', data: { userId: '123', action: 'login' } } as UserAction);3. log4js — potente y configurable
log4js es heredero del popular framework Java Log4j. Ofrece un rico sistema de configuración y soporte para varios formatos de salida.
Instalación:
npm install log4jsnpm install @types/log4js --save-devEjemplo de configuración con TypeScript:
import log4js from 'log4js';
log4js.configure({ appenders: { out: { type: 'stdout', layout: { type: 'colored' } }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' }, 'api': { appenders: ['out'], level: 'info' } }});
const logger = log4js.getLogger('api');logger.info('Solicitud API procesada');logger.debug('Parámetros de la solicitud:', { method: 'GET', url: '/users' });4. Bunyan — pr
También en la biblioteca
Trabajo con S3 y almacenamiento en la nube en TypeScript: bibliotecas y ejemplos
Valibot para TypeScript: guía completa con ejemplos
Colas de tareas en Kotlin: Coroutines, Flow y bibliotecas para procesamiento en segundo plano
neverthrow para TypeScript: guía completa con ejemplos
Event Bus y el patrón Observer en JavaScript (Node.js): implementación y ejemplos