Как добавить unique_id в журналы моих экспресс-узлов с помощью winston без рефакторинга всего?

У меня есть экспресс-приложение. Я хотел бы отследить все журналы, которые были сделаны одним запросом.

В Apache есть модуль под названием mod_unique_id, который вставляет в заголовки запроса специальный модуль, содержащий уникальный хэш. Я хотел бы использовать такой хэш при регистрации (что угодно).

Например, если apache назначает пользователю уникальный идентификатор со значением «abcdefg», и где-то в моем коде (контроллер, модель или что-то еще) я создаю журнал отладки, который я бы хотел, чтобы «abcdefg» был прикреплен к каждой записи журнала.

Единственная идея, которая приходит мне в голову, - создать экземпляр регистратора с помощью app.use() и передать этот экземпляр регистратора ВСЕМ функциям, которые необходимы (модели, библиотеки и т. д.), чтобы сгенерировать правильный ответ.

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

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

PS: в настоящее время я использую winston для входа


person Andrea Baccega    schedule 30.12.2015    source источник
comment
Я не помню, как модули загружаются в node.js, но, надеюсь, после загрузки модуля, если вы измените его в другом модуле, изменения должны быть видны везде. Если это так, то вы можете обернуть совет вокруг модуля winston или любого другого метода winston, который вам нужен. Вот три библиотеки для аспектно-ориентированного программирования: github.com/cujojs/meld, github.com/mgechev/aspect.js, github.com/antivanov/jsAspect. Функция совета заменяет вашу функцию, не изменяя ее. Это похоже на шпионажа в sinon.js.   -  person user3743222    schedule 01.01.2016
comment
если вы это сделаете, не повлияет ли это и на другие запросы?   -  person RodH257    schedule 18.05.2016
comment
github.com/boldrocket/winston-express-request-logger   -  person robertklep    schedule 16.03.2017
comment
Эй, я имел дело с той же проблемой, не мог найти подходящее решение, какие-то новые идеи?   -  person Kesem David    schedule 16.03.2017
comment
Здравствуйте, вы нашли какое-нибудь решение для этого?   -  person Vinay Pandya    schedule 18.09.2018