Ejemplo de Configuración de Logger

El funcionamiento del Logger es muy sencillo, tiene las siguientes funcionalidades:

A la hora de hacer un log es necesario un contexto. Con este contexto se va a mapear en la base de datos y, dependiendo del mismo, configuramos los niveles, el webhook URL, si el webhook es de Slack, Teams, Google, etc. También se pueden configurar los logs de archivos, pudiendo gestionar el nombre de la carpeta que va a contener el archivo con el log, todo esto personalizable desde la base de datos. Además, se permite la compatibilidad con cualquiera de las aplicaciones que hay en la empresa. A continuación, se muestra un ejemplo de una configuración de logger:

{
  "_id": {
    "$oid": "66146fcdf1d88197c8d25771"
  },
  "webhookUrl": "https://hooks.slack.com/services/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",
  "fileLevel": 3,
  "consoleLevel": 3,
  "webhookLevel": 3,
  "name": "backupService",
  "context": "BackupService",
  "webhookStrategy": "slack",
  "application": "inlaze_task"
}

El logger anterior está configurado para imprimir en consola, escribir en un archivo y mandar un webhook solo si el nivel es menor o igual a 3. El nombre es backupService, por lo que la carpeta en donde guardará los logs va a ser backupService. El contexto es BackupService, la aplicación es inlaze_task, y tiene una webhook URL con una estrategia de Slack para enviar el log.

  • Por lo general, todos los logs se ponen en consola y en archivo, solo que el contexto suele ser "General", por lo que no queda nada centralizado. Para configurar, simplemente hay que mapear cada uno de los puntos.

  • La funcionalidad de logs por archivos permite escribir archivos autorotativos cada cierto peso para que no se haga un archivo muy extenso y pesado.

  • La funcionalidad de enviar los logs a un webhook está libre de ser gestionada en la aplicación por medio de una propiedad del servicio llamado cb, el cual está tratado como un callback. La idea es que esta funcionalidad integre el llamado a una tarea asíncrona que está en el microservicio de task, que basado en todas las propiedades anteriores hace el envío de la petición para imprimir en un log.

  • Es muy importante para que el logger encuentre el contexto, especificar el nombre de la aplicación, que es extraída de una variable de entorno llamada APP_NAME.

Last updated