Настройка журналирования для нужных микросервисов в файле logger.yml

Сервер BOOCO Astra (v 2.x) / master-logger

Журналирование настраивается на двух уровнях:

  • для каждого микросервиса можно задать настройки: какие события отображать в консоли самого микросервиса, а какие — отправлять в брокер сообщений;
  • на уровне микросервиса master-logger также можно настроить, что отображать в его консоли, а что сохранять в базе данных.

Настройка журналирования для каждого микросервиса

На уровне большинства микросервисов можно настроить:

  • какие сообщения отображать в консоли самого микросервиса;
  • какие сообщения транслировать в брокер.

Это делается в файле logger.yml (индивидуального для каждого микросервиса).

Пример с выводом всех сообщений в консоль микросервиса и отправкой в брокер только сообщений с уровнями ERROR (ошибки), INFO (информационные сообщения), WARN (предупреждения):

logger:
  console:
    level: [ all ]
    context: [ all ]
  broker:
    level: [ ERROR, INFO, WARN ]
    context: [ all ]
💡
В каждом файле docker-compose.yml микросервисов находится строка для прикрепления файла logger.yml в контейнер, ее необходимо раскомментировать и перезапустить контейнер.
volumes:
      - ./logger.yml:/data/logger.yml

Настройка журналирования на уровне микросервиса master-logger

Для микросервиса master-logger есть свой файл logger.yml, в котором настраиваются действия с логами каждого микросервиса:

  • db — сохранять в базе данных;
  • console — выводить в консоль микросервиса master-logger (чтобы в одном месте смотреть все интересующие логи).

Названия микросервисов (rest-api-v1, bosql trigger-factory и др.) берутся из поля source, в котором указывается имя микросервиса, который является источником события.

Пример с сохранением в базе данных всех сообщений с уровнем ERROR независимо от контекста и выводом всех сообщений в консоль микросервиса master-logger:

rest-api-v1:
  db:
    level: [ error ]
    context: [ all ]
  console:
    level: [ all ]
    context: [ all ]

bosql:
  db:
    level: [ error ]
    context: [ all ]
  console:
    level: [ all ]
    context: [ all ]
    
trigger-factory:
  db:
    level: [ error ]
    context: [ all ]
  console:
    level: [ all ]
    context: [ all ]

Работа с Журналом событий в BOOCO

BOOCO может работать в двух режимах:

  1. По умолчанию сообщения об ошибках записываются в таблицу booco/log через микросервис bosql и читаются из этой же таблицы.
  2. Сообщения об ошибках отправляются в брокер сообщений и читаются из таблицы booco_log/log через master-logger.

Включение режима отображения Журнала master-logger в BOOCO

  1. Настройте режим публикации сообщений Журнала через master-logger. Для этого в файле booco.yml нужно отключить логирование через db и включить логирование через broker:
  2. loggers:
      console:
        enable: true
      db:
        enable: false # ВАЖНО!
      broker:
        enable: true
        exchange: booco.log
  3. Сделайте так, чтобы Журнал забирался не с bosql, а через master-logger. Для этого настройте URL, по которому будут запрашиваться логи: в файле .env добавьте переменную LOG_URL, которая указывает на API сервиса master-logger, например: LOG_URL=http://localhost:3001. Уведомления об изменениях Журнала работают в обоих случаях одинаково: микросервисы bosql и master-logger публикуют их в брокере в стандартный exchange.

Просмотр Журнала

Если используются дополнительные микросервисы и настроено журналирование на уровне микросервиса master-logger, то в Журнале на сервере BOOCO:

  • отображается дополнительная колонка Источник (Source);
  • в Фильтре отображаются микросервисы, по которым можно отфильтровать сообщения в Журнале (по умолчанию показывается только booco).

Список дополнительных микросервисов берется из файла booco.yml:

log:		
  services:
    - bosql
    - exchange-sync
    - ldap-access
    - trigger-factory
    - rest-api-v1

Получить список микросервисов можно при помощи метода getConfig('log.services'), который доступен и на бэкенде, и на фронтенде.