Metalog — логирование

Логер Metarhia: уровни, файловые провайдеры, ротация, форматирование, Redis-провайдер для тестов.

Что это

Базовый компонент стека. Везде, где пишутся логи (Impress, Metacom, бизнес-логика), используется metalog. Совместим по интерфейсу с console.

Уровни

  • log — обычный
  • info, warn, error, debug
  • Все методы пишут с метаданными: timestamp, workerId, уровень.

Провайдеры

  • logger-fs — пишет в файл с ротацией.
  • logger-console — в stdout.
  • logger-redis — для тестов (быстро прочитать что насыпалось).
  • Любой провайдер пишется руками — реализуй интерфейс.

Префикс logger- для имён файлов провайдеров.

Структурированные ошибки

log.error(new Error('cannot open file', { cause: err }));

Внутри metalog ошибки превращаются в plain-объект через Error.toString() → можно сериализовать в JSON и записать.

Multi-thread

Поле workerId (или logId/logWorkerId) — какой воркер написал лог. В Impress с многопоточностью это важно для траблшутинга.

Метаданные

Логер добавляет:

  • timestamp (точное время)
  • pid процесса
  • workerId треда
  • level
  • источник записи (если настроено)

Конфигурация

log: {
  path: './log',
  workers: 4,
  writeInterval: 3000,
  writeBuffer: 64 * 1024,
  keepDays: 30,
}
  • Буферизация записи (батчинг).
  • Лимит дней — старые файлы удаляются.

🎓 Источники

См. также