Создайте глобальные переменные во всем контексте и передайте их в регистратор Winston.

Прежде всего хочу сказать, что я впервые работаю над node. Мое приложение узла не использует экспресс-фреймворк или что-то в этом роде. Мое приложение развернуто в контейнерах под докером. Я использую модуль Winston для хранения журналов приложений. Вот как выглядит мой logger.js:

      const { createLogger, format, transports } = require('winston');

const { combine, json, splat, timestamp } = format;

const logLevel = process.env.LOG_LEVEL || 'info';
const logger = createLogger({
  level: logLevel,
  format: combine(timestamp(), splat(), json()),
  defaultMeta: { 
    service: 'my-service',
    'Transaction-Ref-Id': 'HERE SHOULD BE TXNREFID'},
  transports: [new transports.Console()],
  silent: process.env.NODE_ENV === 'test',
});

module.exports = logger;

Я использую некоторую информацию по умолчанию в каждом журнале, который печатаю. Теперь я хочу создать уникальный идентификатор для каждого запроса, который я получаю в своем приложении, и использовать этот идентификатор во всех методах и функциях, участвующих в запросе. Уникальный идентификатор передается в заголовке, и если пользователь его не передает, я генерирую уникальный идентификатор. Проблема в том, что я не знаю, как передать этот уникальный идентификатор вdefaultMetaвlogger.jsи иметь его во всем объеме запроса.

Я исследовал локальное хранилище, но считаю, что это плохая практика, поскольку узел — это серверная технология. Я не могу использовать экспресс-фреймворк, cls-hooked или что-то в этом роде.

0 ответов

Другие вопросы по тегам