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étodo | Nivel | Cuándo usar |
|---|---|---|
logger.debug(msg, data?) | DEBUG | Información detallada de desarrollo. Silenciada en producción por defecto. |
logger.info(msg, data?) | INFO | Eventos normales del sistema (inicio, conexiones, operaciones exitosas). |
logger.warn(msg, data?) | WARN | Situaciones inesperadas pero no fatales. |
logger.error(msg, error?) | ERROR | Errores 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:
# Activar todos los logsDEBUG=* npm run dev
# Solo logs del namespace 'app'DEBUG=app:* npm run dev
# Múltiples namespacesDEBUG=app:*,wabot:* npm run dev
# Excluir un namespaceDEBUG=*,-wabot:pg-repository-base npm run devNamespaces internos del framework
| Namespace | Descripción |
|---|---|
wabot:mindset-operator | Procesamiento del system prompt y llamadas al LLM. |
wabot:job-scheduler | Scheduler de comandos asíncronos. |
wabot:pg-repository-base | Creació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 } }}