Un buen registro de logs nos ayuda a ver el comportamiento de nuestra aplicación y nos permitirá controlar que queremos registrar y donde.
Cuando desplegamos en entornos que no tenemos control, como producción, por ejemplo, nos permite realizar trazas y ver ese comportamiento inesperado de nuestra aplicación.
Por eso os dejo un proyecto reutilizable para Logs con Azure Application Ingisht.
Lo único que te queda en un entorno distribuido o de microservicios es propagar el Correlation Id de Application Insight para que quede una librería redonda.
Por tanto, para una buena telemetría deberías tener:
- No debe afectar al rendimiento real de la aplicación.
- Preciso y lo más completo posible.
- Que pueda usar el análisis de datos de la plataforma.
- Debe poder ayudar a reproducir el problema.
- Que sea distribuible con facilidad y accesible por cualquier equipo de desarrollo.
- Configurable con Feature Flags.
- Limpiar la información sensible.
- Tener un Correlation Id, para usa en un análisis forense.
Como me baso en las tablas estándar de .NET y a veces se me olvida, creo esta nota metal:
Trace | Debug | Information | Warning | Error | Fatal | |
Trace | Incluida | Incluida | Incluida | Incluida | Incluida | Incluida |
Debug | Incluida | Incluida | Incluida | Incluida | Incluida | |
Information | Incluida | Incluida | Incluida | Incluida | ||
Warning | Incluida | Incluida | Incluida | |||
Error | Incluida | Incluida | ||||
Fatal | Incluida |
Hace tiempo hablé de SeriLog y algo de Log4Net, ver este artículo, no entro en más detalle y os dejo las fuentes para que podais trastear con la librería:
Una vez inyectado tenemos que ir a appsettings.development.json y usar el Intrumentation Key de App Insight:
Hacemos uso en nuestra aplicación:
Y estudiar el código de la interface ICustomLogger.cs y la clase CustomLogger.cs que te puedes bajar de este ejemplo:
Con este post me tomo unas merecidas vacaciones, que disfrutéis de vuestro merecido descanso, nos leemos.