Logging
Logging
Sección titulada «Logging»Aprende cómo implementar logging estructurado en tus aplicaciones Veloce-TS usando Pino, uno de los loggers más rápidos para Node.js.
Resumen
Sección titulada «Resumen»Veloce-TS proporciona logging integrado con:
- Integración Pino - Logging JSON estructurado y rápido
- Child Loggers - Logging contextual con herencia
- Niveles de Log - trace, debug, info, warn, error, fatal
- Integración Request ID - Rastreo automático de peticiones
- Pretty Printing - Logs legibles en desarrollo
Inicio Rápido
Sección titulada «Inicio Rápido»import { getLogger } from 'veloce-ts';
const logger = getLogger();
logger.info('Aplicación iniciada');logger.error('Algo salió mal', new Error('Detalles del error'));Configuración
Sección titulada «Configuración»Inicializar Logger
Sección titulada «Inicializar Logger»import { initializeLogger } from 'veloce-ts';
// Desarrollo - Pretty printinginitializeLogger({ level: 'debug', pretty: true});
// Producción - Salida JSONinitializeLogger({ level: 'info', pretty: false});Niveles de Log
Sección titulada «Niveles de Log»logger.trace('Información muy detallada');logger.debug('Información de depuración');logger.info('Información general');logger.warn('Mensaje de advertencia');logger.error('Ocurrió un error', error);logger.fatal('Error fatal', error);Child Loggers
Sección titulada «Child Loggers»Crear loggers contextuales:
@Controller('/users')class UserController { private logger = getLogger().child({ component: 'UserController' });
@Get('/:id') async getUser(@Param('id') id: string, @RequestId() requestId: string) { const logger = this.logger.child({ requestId, userId: id });
logger.info('Obteniendo usuario'); // ... lógica logger.info('Usuario obtenido exitosamente'); }}Logging Estructurado
Sección titulada «Logging Estructurado»logger.info({ userId: '123', action: 'login', ip: '192.168.1.1'}, 'Usuario inició sesión');
// Salida (JSON):// {// "level": 30,// "time": 1234567890,// "userId": "123",// "action": "login",// "ip": "192.168.1.1",// "msg": "Usuario inició sesión"// }Integración con Request ID
Sección titulada «Integración con Request ID»Con el middleware de request context, el request ID aparece automáticamente en los logs:
app.use(createRequestContextMiddleware({ logging: true }));
@Get('/data')async getData(@RequestId() requestId: string) { logger.info('Procesando petición'); // Incluye requestId automáticamente}Mejores Prácticas
Sección titulada «Mejores Prácticas»1. Usar Child Loggers
Sección titulada «1. Usar Child Loggers»// Bienconst logger = getLogger().child({ component: 'Service' });
// Mejorconst logger = getLogger().child({ component: 'UserService', version: '1.0'});2. Incluir Contexto
Sección titulada «2. Incluir Contexto»logger.info({ userId, action: 'update' }, 'Usuario actualizado');3. Registrar Errores Correctamente
Sección titulada «3. Registrar Errores Correctamente»try { await riskyOperation();} catch (error) { logger.error({ error, userId }, 'Operación falló'); throw error;}Próximos Pasos
Sección titulada «Próximos Pasos»- Aprende sobre Contexto de Peticiones para rastreo
- Explora Caché para optimización de rendimiento