У меня есть экспресс-приложение. Я хотел бы отследить все журналы, которые были сделаны одним запросом.
В Apache есть модуль под названием mod_unique_id
, который вставляет в заголовки запроса специальный модуль, содержащий уникальный хэш. Я хотел бы использовать такой хэш при регистрации (что угодно).
Например, если apache назначает пользователю уникальный идентификатор со значением «abcdefg», и где-то в моем коде (контроллер, модель или что-то еще) я создаю журнал отладки, который я бы хотел, чтобы «abcdefg» был прикреплен к каждой записи журнала.
Единственная идея, которая приходит мне в голову, - создать экземпляр регистратора с помощью app.use()
и передать этот экземпляр регистратора ВСЕМ функциям, которые необходимы (модели, библиотеки и т. д.), чтобы сгенерировать правильный ответ.
К сожалению, это заставит меня переписать большую часть кода, чтобы старые функции могли принимать этот новый экземпляр регистратора.
Кто-нибудь знает лучший способ иметь один экземпляр «логгера» для каждого «запроса», который каким-то образом доступен, не передавая этот «журнал, созданный для каждого запроса» чему-либо?
PS: в настоящее время я использую winston
для входа
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