Hola, les saluda Luis y aquí les traigo otro artículo.
Índice
El registro es una buena práctica. He aquí cómo hacerlo bien
El registro es una parte crucial del desarrollo de una aplicación. Cuando la aplicación está en producción, los registros son necesarios para identificar el problema si algo sale mal. Entonces, si eres un desarrollador, debes hacerte esta pregunta: «¿Estoy iniciando sesión de la manera correcta?»
En este artículo, daremos una respuesta a esa pregunta. Discutiremos las mejores prácticas que los desarrolladores, especialmente los desarrolladores de Node.js , deben seguir al registrar los eventos de su aplicación.
¿Por qué son importantes los registros?
No importa lo cuidadosos que seamos al desarrollar una aplicación, es una tarea difícil hacerla 100% segura y libre de errores. Intentamos encontrar y resolver la mayoría de los problemas durante el desarrollo mediante pruebas y depuración. Aún así, no podremos atraparlos a todos.
Debido a estos errores restantes, las aplicaciones que se ejecutan en producción pueden comportarse de formas inesperadas en determinadas situaciones. A veces, pueden ser realmente críticas. Incluso pueden bloquear la aplicación por completo. En tal caso, ¿podemos ejecutar un depurador para averiguar qué salió mal con nuestra aplicación? No, no es la idea más práctica.
En su lugar, usamos los registros de la aplicación para comprender cómo y por qué la aplicación se comporta de manera diferente. Para ello, tenemos que configurar nuestra aplicación para registrar información sobre sus eventos y errores. Y esto es lo que llamamos registro. El registro nos ayuda a identificar problemas con una aplicación que se ejecuta en producción.
Mejores prácticas de registro
Dado que los registros son bastante importantes, debemos seguir prácticas de registro que nos ayudarán a identificar fácilmente los problemas y sus causas.
1. No use console.log
Los desarrolladores tienden a confiar en Node console.log
para registrar eventos de la aplicación, ya que es de fácil acceso, no necesita configuración adicional y es fácil de usar. Pero si quiere tomarse el registro en serio, y debería hacerlo, esta no es la forma de lograrlo.
console.log
imprime su salida a stdout
. Otras funciones de la consola, como console.err
y console.warn
, imprimir salidas a stderr
. No puedes configurar console.log
para transportar los registros a un archivo o una base de datos. No puede activar y desactivar el inicio de sesión o cambiar entre diferentes niveles de registro (de los que hablaremos más adelante) cuando la aplicación está en producción.
Simplemente pon, console.log
no proporciona suficientes funciones u opciones de configuración para convertirse en una herramienta de registro adecuada. En su lugar, debería utilizar una biblioteca de registro dedicada para hacer el trabajo correctamente.
2. Utilice una biblioteca de registros dedicada
Una biblioteca de registro dedicada, a diferencia de console.log
, proporciona un conjunto de características para crear registros que nos permiten identificar problemas fácilmente y suficientes configuraciones para hacer el mejor uso de nuestros registros.
- La mayoría de las bibliotecas de registro admiten varios niveles de registro, como información, depuración, advertencia y error. Estos niveles ayudan a filtrar los registros según nuestras necesidades.
- La mayor ventaja de usar una biblioteca de registro es poder cambiar entre niveles de registro incluso cuando la aplicación está en producción.
- También admiten el formateo de registros con diferentes colores para diferentes niveles de registros. Algunas bibliotecas también admiten el formateo de diferentes tipos de datos como JSON.
Winston y Bunyan son dos de las bibliotecas de registro más populares disponibles para los desarrolladores de Node.
En este artículo, usaremos Winston en los ejemplos de código.
3. Fuente, marca de tiempo, contexto: las partes más importantes de un registro
Cada registro registrado por su aplicación debe constar de estas tres partes.
- Fuente: si estamos depurando nuestra aplicación usando los registros, es importante saber dónde ocurrió cada evento. La fuente podría ser el nombre del host, el método, la zona o, en la arquitectura de microservicios, el nombre del servicio.
- Marca de tiempo: registrar la marca de tiempo de los eventos que ocurrieron también es importante para el registro. Es posible que necesitemos filtrar los registros registrados dentro de un cierto período de tiempo u ordenar los registros por el momento en que ocurrieron. Por lo tanto, la marca de tiempo es una parte esencial del registro de una aplicación.
- Contexto y nivel: el contexto de un registro en particular es importante cuando estamos depurando la aplicación. Por ejemplo, si la aplicación está registrando un nuevo usuario, hay varias formas en que esta operación podría fallar. El usuario puede proporcionar datos no válidos o ya puede estar registrado en el sistema. Estas fallas no ocurren porque nuestra aplicación se está comportando de manera defectuosa. Pero si esta operación falla porque la aplicación no pudo conectarse a la base de datos, eso significa que algo salió mal. Por lo tanto, proporcionar el contexto del evento con cada registro es crucial para aprovechar al máximo el registro. Además, registrar el nivel también es importante para filtrar e identificar diferentes problemas de la aplicación en función de su importancia.
4. Utilice los niveles de registro correctamente
Usamos niveles de registro para ordenarlos por urgencia para poder filtrarlos en consecuencia.
Syslog El estándar proporciona niveles específicos, declarados según su gravedad, que podemos usar al iniciar sesión.
- Emergencia: el sistema no se puede utilizar.
- Alerta: Se deben tomar medidas de inmediato.
- Crítico: condiciones críticas.
- Error: condiciones de error.
- Advertencia: condiciones de advertencia.
- Aviso: condiciones normales pero significativas.
- Informativo: mensajes informativos.
- Debug: mensajes de nivel de depuración.
Puede modificar los niveles estándar para crear una lista de niveles que se adapten mejor a su aplicación. Sin embargo, cada registro debe tener un nivel para poder filtrarlos según sea necesario.
5. Qué no hacer al iniciar sesión
El registro no debería generar errores propios.
Estamos tratando de encontrar errores en nuestra aplicación con los registros. No necesitamos registros para agregar sus propios errores además de eso. Por lo tanto, asegúrese de que las operaciones de registro se escriban de manera que no generen errores por sí mismas.
Por ejemplo, el siguiente código podría generar un error al iniciar sesión. Debes evitar instancias como esta:
Las operaciones de tala también deben ser apátridas.
Las operaciones de registro no deben generar ningún cambio de estado en la aplicación, como cambiar la base de datos. Debes evitar escenarios como este:
6. Utilice el nivel de registro adecuado en producción
Ser capaz de registrar registros de todos los niveles sería ideal cuando nuestra aplicación está en producción. Pero no siempre es práctico. Si su aplicación tiene mucho tráfico de usuarios, registrar cada nivel de código resultaría en una gran caída en el rendimiento.
Necesitamos adoptar un enfoque proactivo para evitar esto y registrar de manera óptima. En una aplicación de nivel de producción, la mayoría de los registros pertenecen a los niveles de depuración e información. Por lo tanto, durante el tiempo de ejecución normal, si desactivamos los registros de información y depuración, y registramos solo los niveles inferiores, podemos evitar los problemas de rendimiento que acompañan al registro frecuente.
En una aplicación en producción, activamos la advertencia, el error y otros niveles inferiores de registros para identificar si está en estado crítico. Podemos activar los registros de nivel de depuración y de información solo cuando se detecta un error.
Uno de los beneficios de utilizar un marco de registro es poder cambiar el nivel de registro fácilmente durante la producción.
7. Almacene el nivel de registro actual como una variable de entorno
Para garantizar que podamos cambiar fácilmente entre niveles cuando sea necesario, debe almacenar el nivel de registro actual de la aplicación como una variable de entorno. Esto nos da la capacidad de cambiar el nivel cuando la aplicación todavía está en producción simplemente cambiando el valor de la variable.
Resumen
Si está creando una aplicación que está destinada a pasar a producción, el registro es una característica crucial que debe tener. En este artículo, discutimos las mejores prácticas que debe usar al crear un sistema de registro. Con este conocimiento, puede comenzar a construir un excelente sistema de registro para su aplicación hoy mismo.
Gracias por leer.
Añadir comentario