В предыдущей статье мы разобрали параметры приложения, в данной статье мы разберем создание логирования, а в следующей части мы разберем работу с переменными среды выполнения, ее чтение и запись на основание стандартных параметров и параметров командной строки.
Начнем с выбора хранения логов. Для удобства чтения, поиска и дальнейшей обработки логов будет использоваться хранения в формате база данных. База данных предлагается в формате документориентованной nedb от seald-io.Все данные хранятся при этом в json-формате, что позволит просмотреть логи даже без сервера, просто открыв файл. Произведем установку данного пакета:
pnpm i @seald-io/nedb
Более подробно почитать о возможностях данной библиотеки можно на npm репозитории, https://www.npmjs.com/package/@seald-io/nedb .
Теперь сформируем концепцию применения логирования. Для логирования будет использоваться числовое значение обозначающие степень логирования. Значения будет 3, без логирования (значение 0), логирование запросов (значение 1), логирование полное (значение 2). Данные параметры будут задаваться через параметры приложения, при этом стандартное значение будет 1. В полное логирование будет так же прописываться каждый вызов функции и статус ее работы.
Перед тем как приступим к созданию файла с функциями для работы с логированием, нам необходим создать новый параметр командной строки --loglvl. Вместе с этим надо создать переменную logLvl с дефолтным значением в конфигурации. И нельзя забывать о функции получения информации о уровне логирования showLogLvl. Внесенные изменения предоставлены на скриншотах ниже:
Для удобства разработки и отлаживания всех компонентов в тип запуска приложения dev добавим еще параметр --loglvl=2.
Теперь приступим уже к непосредственно работы с системой логирования. В директории libs создадим файл logs.libs.js.
В данном файле произведен импорт библиотеки nedb, после чего произведем создание БД если ее не было ранее или произведем ее открытие. После этого произведем создание функции логирования.
Теперь в файле app.js произведем импортирование нашего logs.libs.js, а после этого произведем доработку запуска севрера. При запуске севрера будет проверяться какой уровень логирования, если больше 0, то будет производиться запись о запуске сервера на определенном порту, также добавим логирование информации о том, что сервер был запущен в режиме dev.
После запуска сервера появится новая директория logs, а в ней появится файо server.log.
Теперь перейдем в сам файле, как видете на скриншоте ниже, весь лог состоит из json объектов. Таким образом читаемость лога остается высокой даже без использования системы (далее мы реализуем возможность просматривать логи в веб-интерфейсе).
Подведем итоге, в ходе данной части мы разработали систему логирования и применили ее. В следующей части мы разберем работу с переменными среды, а также создадим возможность добавлять переменные среды через саму cms.
Подписывайтесь на наш телеграм канал (https://t.me/rebeltechru), в нем вы можете найти статьи по разработке и сами проекты.