better-logger a working catalog of structured log output

🚀 Better Logger

Logger avanzado para consola con estilos CSS, log context tipo MDC, transports (File / HTTP / OTLP→SigNoz), hooks, serializers y CLI integrado. Soporte dual browser/terminal.

@mks2508/better-logger cubre los dos runtimes desde un solo package: en browser emite CSS %c formatting con gradientes, sombras y badges automáticos; en terminal renderiza con colores ANSI y expone primitivas CLI (spinner, box, table, step, header). Encima del styling hay un núcleo de log context (MDC vía AsyncLocalStorage), transports con buffer acotado y retry, hooks awaited para redacción PII, serializers por tipo, y emisión alineada con OpenTelemetry (severityNumber / severityText en cada TransportRecord).

La referencia completa de la clase está en docs/api/index/classes/Logger.md.

📦 Instalación

npm install @mks2508/better-logger
# o
bun add @mks2508/better-logger

🚀 Quick Start

import logger from '@mks2508/better-logger';

logger.info('Application started');
logger.success('Database connected');
logger.warn('High memory usage');
logger.error('Connection failed');
logger.critical('Disk full');
logger.trace('verbose internals');  // filtrado por defecto (verbosity=debug)

Importar métodos sueltos

import { info, error, success, trace } from '@mks2508/better-logger';
info('Proceso iniciado');
success('✓ Completado');

✨ Features

Core

  • 🎨 Estilos CSS en consola — gradientes, sombras, %c formatting, presets listos
  • 🏷️ Badges — etiquetado flexible con badges() / badge()
  • 🌗 Temas adaptativos — detección automática light/dark
  • 🎯 TypeScript first — tipado completo, cero any en la superficie pública

Niveles y verbosidad

  • 📊 6 niveles jerárquicostrace < debug < info < warn < error < critical (+ silent)
  • 🔭 trace alineado con OpenTelemetry — severity number OTel (1-24) listo para SigNoz
  • 🔇 Verbosidad filtrablesetVerbosity('warn') filtra todo por debajo

Log context (MDC)

  • 🧩 Contexto estructuradowithContext({ requestId }, () => { ... }) se mergea en cada TransportRecord dentro del scope del callback
  • 🧬 Loggers hijueloschild({ ... }) hereda contexto sin mutar al padre
  • 🏷️ Resource OTelsetResource({ 'service.name': ... }) por logger

Transports

  • 📁 File — async (fs.promises), bounded buffer, sanitización de path, fallback a localStorage en browser
  • 🌐 HTTP — batching, retry con backoff, bounded buffer (sin OOM), status check
  • 🔭 OTLP → SigNoz — payload OTLP/HTTP JSON spec-compliant, ingestion key desde env var (nunca hardcodeada)
  • 🧩 Custom — implementa ITransport y registra con addTransport()

Hooks, serializers y más

  • 🪝 Hookson('beforeLog', ...) (awaited, soporta redacción PII) / on('afterLog', ...)
  • 🔄 Middleware — pipeline use((entry, next) => ...)
  • 🧬 Serializers — transforma tipos antes de loggear (addSerializer(Error, fn))
  • 🖥️ CLI integrado — spinners, boxes, tablas, steps, headers

📊 Niveles de log

trace(-1) < debug(0) < info(1) < warn(2) < error(3) < critical(4)

trace es el nivel más bajo, alineado con la banda TRACE de OpenTelemetry (severity 1-4). Cada TransportRecord incluye severityNumber y severityText OTel automáticamente.

Nivel Valor Severity OTel Uso típico
trace -1 TRACE (1-4) Verbosidad máxima, internals
debug 0 DEBUG (5-8) Diagnóstico en desarrollo
info 1 INFO (9-12) Eventos informativos
warn 2 WARN (13-16) Condiciones inesperadas recuperables
error 3 ERROR (17-20) Fallos de operación
critical 4 FATAL (21-24) Errores fatales, shutdown
import { LOG_LEVELS } from '@mks2508/better-logger';

logger.setVerbosity('debug');   // muestra trace + debug + ...
logger.setVerbosity('warn');    // solo warn, error, critical
logger.setVerbosity('silent');  // nada

success() emite a INFO severity (con styling de success y tag: 'success' en el record, para que transports distingan success de info genérico).

📚 Documentación

Página Contenido
Core Clase Logger, config, scoped loggers (scope / component / api), contexto anidado
Context (MDC) withContext / withContextAsync / child / setResource con AsyncLocalStorage
Transports FileTransport, HttpTransport, OtlpTransport, custom ITransport, flush/shutdown
Hooks & Middleware on('beforeLog') / on('afterLog') awaited, pipeline use()
Serializers Transformación de tipos antes del log (addSerializer, prioridad, registry)
Styles StyleBuilder, presets (cyberpunk, glassmorphism, minimal, debug), temas, toggles
CLI Spinners, boxes, tablas, steps, headers para terminales Node.js
Playground Demos interactivas y ejemplos ejecutables
Migración a v0.18 Cambios breaking del refactor 0.18.x y guía de migración
API Reference TypeDoc generado desde src/

🌐 Compatibilidad

  • Browsers modernos — soporte completo (CSS, DevTools, localStorage fallback)
  • Node.js — core + transports (File async, HTTP, OTLP)
  • TypeScript — definiciones completas
  • ESM & CommonJS — ambos exports

🔗 Recursos