Desarrollador Node.js: pregunta de entrevista
¿Cómo diseñas logging para Node.js?
Emite logs estructurados con tiempo, severidad, servicio y request o trace ID; registra decisiones y fallos una vez en el límite propietario, elimina secretos y datos personales y evita ruido o bloqueo.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Los logs son líneas JSON con marca de tiempo, nivel, nombre del servicio, versión y el ID de solicitud o traza, escritas por una biblioteca como pino que serializa de forma asíncrona y barata. Una solicitud recibe una línea en la frontera con método, ruta, estado y duración; los eventos de negocio y los fallos se registran una vez donde se toma la decisión, no en cada capa que atraviesan. Los datos personales y secretos se redactan por configuración antes de serializar, los valores de alta cardinalidad quedan fuera de los mensajes, y el nivel se ajusta en runtime para activar debug en un incidente sin desplegar.
Ejemplo
Un logger pino con lista de redacción para cabeceras authorization y campos password se adjunta a cada solicitud mediante un logger hijo con requestId; el handler registra order.created una vez con orderId y amount, y un middleware de errores registra el fallo una vez con la traza. Durante un incidente el nivel se sube a debug mediante un endpoint de administración durante cinco minutos y luego se baja.
Errores frecuentes
- Registrar el mismo error en cada capa y multiplicar el ruido.
- Usar console.log en producción, que es síncrono en algunos streams y bloquea el loop.
- Escribir emails de usuarios, tokens o cuerpos de solicitud en logs enviados a una plataforma externa.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.