Libreria Gratis Activo

winston

Para registrar logs en aplicaciones Node.js y enviarlos a consola, ficheros o servicios externos.

Librería de logging para Node.js con múltiples transportes, niveles y formatos configurables.

Notas y contexto

Qué es

winston es una librería de logging para Node.js, mantenida por la organización winstonjs. Su lema es “a logger for just about everything” y su idea central es separar el registro de logs de su almacenamiento mediante “transportes”: cada transporte es un destino independiente (consola, fichero, HTTP, bases de datos, servicios cloud). Está escrita en JavaScript, incluye tipados de TypeScript y se distribuye bajo licencia MIT.

Para qué sirve

  • Registrar mensajes con distintos niveles de severidad en aplicaciones Node.js.
  • Enviar los mismos logs a varios destinos a la vez (consola, ficheros, endpoints HTTP).
  • Dar formato a los logs (JSON, texto con color, timestamps) mediante el paquete logform.
  • Capturar excepciones no controladas y rechazos de promesas sin manejar.

Cuándo usarlo

Es una buena opción cuando necesitas un logger flexible y muy configurable, con un ecosistema amplio de transportes de la comunidad (rotación diaria, servicios externos, bases de datos). Si tu prioridad es el máximo rendimiento y un consumo mínimo de recursos, alternativas como Pino suelen ser más rápidas por su diseño orientado a JSON y procesamiento asíncrono. winston destaca cuando valoras la versatilidad de formatos y destinos por encima del rendimiento puro.

Ejemplo

Instalación:

npm install winston

Uso básico con varios transportes:

const winston = require('winston');

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

logger.info('Aplicación iniciada');
logger.error('Algo ha fallado');

Puntos clave

  • Arquitectura de transportes: un mismo logger puede escribir en múltiples destinos a la vez.
  • Niveles de severidad conformes a RFC5424 (error, warn, info, http, verbose, debug, silly) y niveles personalizados.
  • Formatos componibles vía logform: JSON, colores, timestamps, etiquetas, etc.
  • Manejo integrado de excepciones no capturadas y rechazos de promesas.

Ten en cuenta

Su flexibilidad tiene un coste en rendimiento: para escenarios de altísimo volumen de logs, opciones como Pino ofrecen mayor velocidad y menor sobrecarga. Es una librería específica para Node.js, no para el navegador. Consulta la documentación oficial para configuraciones avanzadas de transportes y formatos.

Volver al directorio
Volver al directorio