9 Mejores prácticas de registro
El registro es una herramienta poderosa para la resolución de problemas y el control de errores. Proporciona un registro de eventos que ocurren durante la ejecución de un programa. Sin embargo, es tan útil como el contenido y el formato en sí. Un registro que muestra información inútil es un desperdicio de poder computacional, almacenamiento y dinero.
En mi opinión, la tala debe clasificarse como un ciudadano de primera clase en un sistema. Debido a esto, debe tratar el registro como un proceso formal con las mejores prácticas implementadas y un objetivo claro de lo que desea lograr.
Para empezar, recomendaría NO usar las bibliotecas de salida estándar que proporciona su idioma. Por lo general, les faltan características que proporcionan las bibliotecas de registro y solo deben usarse cuando se depura localmente.
Estos son algunos ejemplos de alternativas a la salida estándar de un idioma:
- Nodo.JS Winston
-Java Log4J
- Ir Zap
Mejores prácticas
1. Pruebe sus registros
No me refiero a pruebas unitarias. Lo que quiero decir es que si escribe registros, ingrese a su servicio y eche un vistazo a la salida. Responde lo siguiente, ¿es lo que esperabas? ¿Falta algo? ¿Son comprensibles? ¿Necesitas más/menos contexto?
Compártalo con un compañero de equipo y pregúntele si entiende el resultado.
2. ¡NO registre información confidencial!
NO registre información confidencial. Las claves de API, las contraseñas, las credenciales y más se incluyen en esta categoría. Es demasiado arriesgado registrar algo confidencial, ya que aumenta las posibilidades de que se filtre y se convierta en un problema de seguridad.
❌
logger.error("Unable to log in", {request});
✅
logger.error("Unable to log in", {
username: request.user,
password: request.pass ? "[HIDDEN]" : null,
// any additional context needed?
})
El registro es tan beneficioso como el mensaje en el registro, por lo tanto, sea específico.
❌
logger.info("We're starting!")
...
logger.info("task complete!")
✅
logger.info("Starting task", {
name: taskName,
params: params,
startTime: startTime
});
logger.info("task complete", {
response: output.response,
event: {
action: taskName,
duration: currentTime - startTime
}
})
La tala cuesta dinero. Los registros generalmente se almacenan en un archivo y se cargan en el almacenamiento donde se pueden analizar. esto cuesta Si su sistema respondió a un millón de solicitudes, podrían almacenarse millones y millones de eventos de registro potenciales. Asegúrese de que solo registren datos relevantes.
5. Registrar todos los errores
Los registros son los mejores amigos para quienes realizan la depuración, por lo que, como programador, si se encuentra en una situación al escribir el manejo de errores, asegúrese de registrar siempre el error antes de lanzar uno diferente para el usuario. Por ejemplo:
catch(err) {
logger.error('An error occured', {error: err, args: args});
throw new SystemError('Unable to process request');
}
6. Utilice las funciones de su registrador
La mayoría de los registradores vienen con una característica realmente poderosa. Niveles de registro. Estos le permiten separar sus registros por entorno contextual. Prod como entornos, solo muestra información y error. Depurar entornos, mostrar todo. También use el entorno por lo que significa, ¡no use el nivel de información para errores!
7. No use el nivel de `depuración` para los datos de monitoreo del sistema
A veces pilla a la gente con la guardia baja, pero no siempre se puede garantizar que el entorno esté configurado para imprimir registros de nivel de `depuración`. Por lo tanto, si está registrando una parte vital de los datos utilizados para los tableros, querrá usar niveles de `info` o `error` que estén garantizados.
8. Asegúrese de mantener los ID de seguimiento en los registros
Este punto es más para sistemas distribuidos, pero si está utilizando ID de rastreo en su sistema. ¡Registrarlos! ¡Descubrir los viajes a través de un sistema sin ellos es muy difícil!
9. Establecer un estándar mínimo para el proyecto
Establezca un estándar de campos mínimos para iniciar sesión en su sistema. Estos deben incluir latencias de registro, duraciones de solicitudes e ID de seguimiento. Un estándar como este le permitirá identificar posibles problemas de rendimiento y ser proactivo en lugar de reactivo al abordarlos.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































