Cómo hacer que Node.js registre correctamente
Para lograr esto, es necesario utilizar uno de los paquetes de desarrollo más populares, winston. Winston es una biblioteca de registro de transferencia asincrónica multicanal para Node.js.
Puedes agregar Winston a tu proyecto instalándolo:
Una vez instalado, puedes agregar Winston a tu proyecto de esta manera:
El fragmento de código anterior empuja la siguiente línea de información a stdout:
Como puede ver, le pasamos la cadena de información a winston, que le dice a winston que el evento que se va a registrar tiene un nivel de registro asociado, es decir, información. De forma predeterminada, Winston proporciona los siguientes niveles de registro (también puede agregar niveles personalizados):
Puede configurar el nivel de registro a través de la siguiente línea:
En RisingStack, normalmente tenemos un entorno Se utiliza la variable denominada LOG_LEVEL. De esta manera podemos cambiar dinámicamente lo que se debe registrar:
Cuando su nivel de registro es bajo, debe registrar todo tanto como sea posible. Sin embargo, hay una regla general que debe seguir: nunca registre credenciales, contraseñas ni información confidencial.
"Nunca registre credenciales, contraseñas ni información confidencial". a través de @RisingStack #nodejs #logging #security
Haga clic en Ir directamente a TWEET
Normalmente, Varios usuarios acceden al menos a un registro, por lo que incluir información de credenciales en los eventos de registro agrega un riesgo adicional.
Cuando empiezas a trabajar con microservicios, el mayor desafío desde la perspectiva del registro es el seguimiento distribuido.
En una arquitectura distribuida, la detección de errores puede resultar frustrante porque los fallos del sistema pueden provocar una afluencia de mensajes de alerta. El rastreo distribuido tiene como objetivo eliminar este problema proporcionando más información sobre transacciones y errores que los archivos de registro normales.
Para hacer esto, debe utilizar el llamado identificador de correlación y pasarlo a todos los servicios que participan en la operación de transacción. Luego puede buscar estos eventos si cada línea de registro está etiquetada con esa ID.
Para generar una ID única, puede utilizar el módulo uuid de esta manera:
Esta ID debe pasarse en la llamada a la función y también debe enviarse al servicio descendente. Como puedes imaginar, esta no es una tarea particularmente gratificante.
Hablando de seguimiento, nuestra solución de seguimiento Node.js/Microservices tiene este aspecto. Realiza un seguimiento del ID de correlación hasta el contenedor solicitado y muestra una visualización del flujo de datos en un diagrama de árbol simple. No necesita buscar en los registros, ya que le mostrará las transacciones directamente de una manera fácil de entender:
Utilice la función de seguimiento de risestack para el seguimiento distribuido de Node.js
Con esto De esta manera, puedes ver directamente las dependencias entre los microservicios y los problemas que surgen. Dependencias
Iniciar sesión en Node.js no es difícil si implementas los métodos y herramientas que acabamos de comentar.