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.