Libreria Gratis Activo

Pino

Para registrar logs estructurados en JSON en aplicaciones Node.js sin penalizar el rendimiento.

Logger de JSON para Node.js con muy bajo coste de rendimiento.

Notas y contexto

Qué es

Pino es una librería de logging para Node.js que escribe los registros en formato JSON estructurado. Está mantenida por Matteo Collina, David Mark Clements, James Sumners y Thomas Watson Steen (con patrocinio de NearForm y Platformatic), y es software libre con licencia MIT. Su diseño prioriza el rendimiento: añade muy poco coste a la aplicación y suele ser varias veces más rápida que otras alternativas de logging del ecosistema.

Para qué sirve

  • Generar logs estructurados en JSON, fáciles de procesar por herramientas de observabilidad (Elastic, Loki, Datadog, etc.).
  • Registrar eventos en APIs y servicios de backend con el menor impacto posible en el rendimiento.
  • Crear loggers hijos (child) que heredan contexto, por ejemplo para etiquetar cada petición con su requestId.
  • Procesar o transformar los logs en un hilo aparte mediante el sistema de transports, sin bloquear el hilo principal.
  • Integrarse de forma nativa con frameworks como Fastify, Express, Hapi o Koa.

Cuándo usarlo

Pino encaja cuando trabajas con Node.js y necesitas logs en JSON listos para indexar y analizar en producción, especialmente en servicios con alta carga donde el coste del logging importa. Si usas Fastify, es prácticamente la opción por defecto. Como alternativas están Winston (más configurable pero más pesado) o Bunyan (también JSON, pero con menor mantenimiento); Pino destaca frente a ambas en velocidad.

Ejemplo

Instalación:

npm install pino

Uso básico y logger hijo con contexto:

const logger = require('pino')();

logger.info('hola mundo');
logger.error({ err }, 'algo ha fallado');

// Logger hijo que añade contexto a cada línea
const child = logger.child({ requestId: 'abc-123' });
child.info('petición recibida');

Para una salida legible en desarrollo se usa pino-pretty:

node app.js | npx pino-pretty

Puntos clave

  • Muy bajo coste de rendimiento: pensada para añadir el mínimo overhead posible.
  • Salida en JSON estructurado, ideal para sistemas de logs centralizados.
  • Loggers hijos para propagar contexto sin repetir campos.
  • Sistema de transports que mueve el procesado de logs a hilos/workers separados.
  • Integración directa con los principales frameworks web de Node.js y soporte para navegador.

Ten en cuenta

  • La salida por defecto es JSON crudo, poco legible en consola; durante el desarrollo conviene combinarla con pino-pretty.
  • Está centrada en Node.js (y runtimes compatibles como Bare/Pear vía pino-bare); no es una solución de logging multi-lenguaje.
  • Su filosofía es ser rápida y minimalista, así que el formateado y el envío a destinos externos se delegan en transports y herramientas aparte, lo que añade algo de configuración.
Volver al directorio
Volver al directorio