Registro en TypeScript: mejores bibliotecas y herramientas en 2024

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 para TypeScript: mejores soluciones

El registro es un componente crítico de cualquier aplicación en producción. Para el ecosistema TypeScript, existen muchas bibliotecas, cada una ofreciendo un conjunto único de capacidades. En este artículo, revisaremos las cinco mejores soluciones: Winston, Pino, Bunyan, Log4js y TSLog. Conocerás sus puntos fuertes, características de configuración y obtendrás ejemplos de código listos para usar.



1. Winston — el estándar universal

Winston es la biblioteca de registro más popular para Node.js con soporte completo para TypeScript. Proporciona un potente sistema de transportes (a dónde enviar los registros) y formato.



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' }) ]});

logger.info('Aplicación iniciada', { service: 'user-service' });logger.error('Error de conexión a la BD', { error: err.message });


Ventajas:

  • Sistema flexible de transportes (archivos, consola, HTTP, MongoDB, Elasticsearch)
  • Soporte integrado para rotación de logs mediante winston-daily-rotate-file
  • Excelente integración con TypeScript — tipado completo
  • Compatibilidad con perfiladores y sistemas APM


2. Pino — registrador ultrarrápido

Pino está orientado al rendimiento — es de 5 a 10 veces más rápido que Winston. Es la elección ideal para sistemas de alta carga y microservicios.



import pino from 'pino';

const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true } }});

logger.info({ user: { id: 123 } }, 'Usuario autenticado');


Características clave:

  • Mínimo consumo de CPU y memoria
  • Soporte nativo para streams de Node.js
  • Serialización eficiente de objetos
  • Soporte para registradores hijo para registro contextual


3. Bunyan — registro estructurado de Joyent

Bunyan fue creado para trabajar con arquitectura de microservicios. Todos los registros se generan en formato JSON, lo que facilita su análisis y procesamiento.



import bunyan from 'bunyan';

const logger = bunyan.createLogger({ name: 'myapp', level: 'info', serializers: { req: bunyan.stdSerializers.req, err: bunyan.stdSerializers.err }});

logger.info({ req: request }, 'Solicitud entrante');


Características:

  • Serializadores integrados para solicitudes HTTP y errores
  • Soporte para ringbuffer para almacenar las últimas N entradas
  • Utilidad CLI bunyan para salida formateada en consola
  • Integración sencilla con el stack ELK


4. Log4js — enfoque familiar desde Java

Log4js es un puerto del popular framework Java Log4j. Ofrece una configuración familiar mediante niveles y appenders.



import log4js from 'log4js';

log4js.configure({ appenders: { out: { type: 'stdout' }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' } }});

const logger = log4js.getLogger();logger.debug('Depuración de conexión');logger.error('Error crítico');


Puntos fuertes:

  • Sistema flexible de categorías y filtros
  • Soporte para múltiples appenders (archivos, bases de datos, TCP)
  • Posibilidad de sobrescribir niveles para diferentes módulos
  • Soporte integrado para clustering


5. TSLog — solución ligera para TypeScript

TSLog es una biblioteca minimalista escrita específicamente para TypeScript. Es ideal para proyectos

Recommendations