Skip to content

Referencia: Logger

Logger

Clase de logging estructurado. No requiere inyección — se instancia directamente con un namespace.

import { Logger } from '@wabot-dev/framework'
export class MiServicio {
private logger = new Logger('app:mi-servicio')
hacer() {
this.logger.info('Procesando solicitud', { userId: '123' })
}
}

Constructor

new Logger(namespace: string)

El namespace es un string en formato scope:sub-scope (convenio de debug).


Métodos

MétodoNivelCuándo usar
logger.debug(msg, data?)DEBUGInformación detallada de desarrollo. Silenciada en producción por defecto.
logger.info(msg, data?)INFOEventos normales del sistema (inicio, conexiones, operaciones exitosas).
logger.warn(msg, data?)WARNSituaciones inesperadas pero no fatales.
logger.error(msg, error?)ERRORErrores que requieren atención.
this.logger.debug('Datos recibidos', { body: req.body })
this.logger.info('Usuario conectado', { userId, channel: 'whatsapp' })
this.logger.warn('Reintentando operación fallida', { intento: 3, maxIntentos: 5 })
this.logger.error('Error al enviar email', error)

Control de niveles con variables de entorno

El Logger usa la librería debug internamente. Los namespaces activos se controlan con la variable DEBUG:

Terminal window
# Activar todos los logs
DEBUG=* npm run dev
# Solo logs del namespace 'app'
DEBUG=app:* npm run dev
# Múltiples namespaces
DEBUG=app:*,wabot:* npm run dev
# Excluir un namespace
DEBUG=*,-wabot:pg-repository-base npm run dev

Namespaces internos del framework

NamespaceDescripción
wabot:mindset-operatorProcesamiento del system prompt y llamadas al LLM.
wabot:job-schedulerScheduler de comandos asíncronos.
wabot:pg-repository-baseCreación y migración de tablas PostgreSQL.
wabot:payments(ejemplo de tu app)

Ejemplo en un módulo de mindset

import { Logger, mindsetModule, description } from '@wabot-dev/framework'
@mindsetModule()
export class PagosModule {
private logger = new Logger('app:pagos')
@description('Procesa el pago de la orden actual.')
async procesarPago(req: PagoReq) {
this.logger.info('Iniciando pago', { monto: req.monto, moneda: req.moneda })
try {
const resultado = await this.gateway.charge(req.monto)
this.logger.info('Pago exitoso', { transaccionId: resultado.id })
return { exito: true, transaccionId: resultado.id }
} catch (error) {
this.logger.error('Error al procesar pago', error)
throw error
}
}
}