Volver a la página principal
viernes 20 septiembre 2024
49

Cómo utilizar Winston en Node.js

Winston es una biblioteca de registro (logging) para Node.js que permite capturar, almacenar y gestionar mensajes de log de forma flexible. Soporta múltiples niveles de log, transporte de mensajes a diferentes destinos (archivos, consola, etc.) y es extensible mediante plugins.

Instalación de Winston en Node.js

Para utilizar Winston en tu proyecto, primero debes instalarlo:

npm install winston

Configuración básica de Winston

Winston permite definir diferentes niveles de log y transportes, que son los medios donde los logs se almacenarán o mostrarán. Un ejemplo común es registrar los mensajes en la consola y en archivos de log.

Aquí un ejemplo básico:

const winston = require('winston');

// Configuración del logger
const logger = winston.createLogger({
  level: 'info', // Nivel de log mínimo ('error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly')
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.Console(),  // Mostrar logs en consola
    new winston.transports.File({ filename: 'logs/app.log' }) // Guardar logs en un archivo
  ]
});

// Uso del logger
logger.info('Este es un mensaje informativo');
logger.error('Este es un mensaje de error');

Algunos ejemplos

Definir diferentes niveles de log

Winston soporta varios niveles predefinidos, desde mensajes críticos hasta información de depuración detallada. Los niveles comunes son:

  • error: Errores críticos.
  • warn: Advertencias.
  • info: Información general del estado del sistema.
  • debug: Información detallada para debugging.
logger.warn('Este es un mensaje de advertencia');
logger.debug('Este es un mensaje de depuración');

Configuración de múltiples transportes

Puedes configurar Winston para enviar logs a múltiples destinos, como archivos separados para diferentes niveles:

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

Formatos personalizados de log

Winston permite personalizar el formato de los logs usando winston.format. Por ejemplo, para mostrar los logs en formato simple en la consola y en formato JSON en los archivos:

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.prettyPrint() // Formato legible
  ),
  transports: [
    new winston.transports.Console({
      format: winston.format.simple()
    }),
    new winston.transports.File({ filename: 'logs/app.log' })
  ]
});

Documentación oficial

Para más detalles sobre las capacidades avanzadas de Winston, puedes consultar la documentación oficial de Winston.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer