При написании журналов для ваших API были ли у вас проблемы с тем, чтобы узнать, какой запрос их зарегистрировал? Вот ваше решение.

Дело в том, что у вас должен быть уникальный идентификатор для идентификации вашего запроса. Это означает, что вы установите этот идентификатор в контексте запроса.

Перво-наперво

npm i [email protected] [email protected] -S

Это будет ваш основной файл регистратора, который вы будете вызывать всякий раз, когда захотите что-то записать. (Я знаю, что это написано на машинописном тексте, я только что скопировал из нашей частной библиотеки, но вы можете легко перевести его в необработанный js, если хотите)

Hapijs

Довольно просто, у вас есть 2 шага здесь, установите идентификатор для каждого запроса и заставьте вашу функцию журнала использовать его.

Установка идентификатора контекста для Hapijs

npm i hapi-request-context-2 -S и следуйте README из репозитория: https://github.com/marcelorl/hapi-request-context-2

Заставить вашу функцию журнала использовать идентификатор контекста

Тогда использование будет таким:

const { logger } = require('./hapi-logger')
logger()('Just one more context label').info({ message: 'application is working'})
logger()('Just one more context label').error({ message: 'This is an error'})

Они должны выглядеть так:

F9etakCmYR - ИНФОРМАЦИЯ [Еще одна метка контекста]: {сообщение: «приложение работает»}

F9etakCmYR - ERROR [Еще одна метка контекста]: {message: ‘This is an error’}

Expressjs

Те же шаги, почти то же самое:

Установка идентификатора контекста для Expressjs

npm i express-http-context -S

Заставить вашу функцию журнала использовать идентификатор контекста

Использование и результат будут точно такими же, как у hapijs, описанных выше.

Бонус

Вы знаете сиквелизы? Вы когда-нибудь видели те журналы, которые он печатает, и опять же, у вас та же проблема, что и раньше: вы просто не знаете, какой запрос сделал этот запрос только что зарегистрированным.

Как только у вас будет файл logger.ts в вашем проекте. Вы будете использовать его в атрибуте logging, который имеет sequelize в своем конструкторе. Проверьте ссылку здесь: http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html

Ваш сценарий должен выглядеть так:

Затем каждый записанный запрос sequelize будет напечатан с идентификатором контекста и в желаемом формате.

Эй, тебе понравился этот пост? Было ли это полезно? Так что, пожалуйста, не забывай хлопать в ладоши (сколько хочешь).