QB
Logging Winston en produccion
Niveles por entorno
En produccion solo se muestran logs importantes para reducir ruido y consumo de recursos.
Desarrollo
ConsolaTodos los logs
Archivosinfo, warn, error
Nivelinfo
Produccion
ConsolaSolo errores
Archivoswarn, error
Nivelwarn
Archivos de log
logs/
error.log — Solo errores (nivel: error)
combined.log — Warn + Error en prod, todo en dev
quickbooks.log — Logs especificos de QB (intuit_tid, realmId)
Funciones disponibles
Produccion (siempre aparecen)
| Funcion | Uso |
logImportant.critical(msg, ctx) | Errores criticos que requieren accion inmediata |
logImportant.error(msg, ctx) | Errores que necesitan investigacion |
logImportant.warning(msg, ctx) | Advertencias importantes para monitoreo |
Solo desarrollo (no aparecen en produccion)
| Funcion | Uso |
logImportant.info(msg, ctx) | Informacion general de flujo |
logImportant.debug(msg, ctx) | Datos detallados de debug |
logImportant.warning('Rate limit alcanzado', {
currentUsage: '450/500',
nextReset: '2026-02-09T15:00:00Z'
});
logImportant.error('Fallo en sincronizacion', {
errorCode: 'QB_SYNC_001',
failedItems: ['INV-001', 'INV-002']
});
Migracion de codigo
// ANTES
const { logger } = require('../utils/logger');
logger.info('Procesando datos');
// DESPUES
const { logImportant } = require('../utils/logger');
logImportant.info('Procesando datos');
Cambio clave: Reemplazar logger por logImportant en todos los imports. Las funciones son equivalentes pero respetan los niveles por entorno.
Configuracion de produccion
// config/production.js
module.exports = {
logging: {
level: 'warn', // Solo warn y error
enableConsole: false, // Sin logs en consola
maxFiles: 10, // Maximo 10 archivos por tipo
maxSize: '10m' // Maximo 10MB por archivo
}
};
Beneficios
| Beneficio | Detalle |
| Rendimiento | 90% menos logs, sin consola en prod, menos I/O de disco |
| Mantenimiento | Solo logs importantes, alertas mas precisas |
| Seguridad | Sin info sensible en logs de debug, control granular |
| Almacenamiento | Rotacion automatica, archivos mas pequenos |
Monitoreo y pruebas
# Probar en desarrollo (todos los logs)
node examples/production-logging-example.js
# Probar en produccion (solo warn + error)
NODE_ENV=production node examples/production-logging-example.js
# Monitorear en tiempo real
tail -f logs/error.log
tail -f logs/combined.log
tail -f logs/quickbooks.log
Troubleshooting
| Problema | Solucion |
| Logs no aparecen en produccion | Verificar NODE_ENV=production, usar logImportant.error() |
| Demasiados logs en dev | Usar logImportant.debug(), reducir LOG_LEVEL |
| Archivos de log muy grandes | Ajustar maxSize y maxFiles en config |