Как мы прокачали логирование в Node.js

KillWolfVlad
byndyusoft

--

OpenSource кубики Byndyusoft™ пополнились библиотекой pino-logger-factory для настройки nestjs-pino, который мы используем для логирования. В честь этого события хотим предложить вам небольшое объяснение конфигурации по умолчанию на примере эволюции одного лога.

12 Factor учит нас тому, что логи должны быть в JSON формате и выводиться в stdout приложения:

В этом логе мы понимаем что произошло и когда, но нам катастрофически не хватает доп. информации о самом сервисе:

  • pid и hostname процесса
  • Имя сервиса, его версия и окружение в котором он запущен
  • Идентификатор места в программе, где была сделана запись в лог

Если будет несколько логов в рамках одного запроса, то их нужно связать общим контекстом:

  • ID запроса
  • ID трассировки (например Jaeger)

Одинаковых логов может быть очень много, поэтому нам важно уметь их отличать:

  • По хешу шаблона сообщения
  • По хешу ошибки

В заключении для большей уверенности в том, что сейчас работает нужная версия приложения можно логировать информацию из CI/CD:

  • Ветка и/или тег
  • Короткий хеш коммита
  • Номер сборки

Следите за новыми репозиториями и обновлениями текущих на нашем https://github.com/Byndyusoft.

--

--