Транспорт Winston для Loggly не работает последовательно - PullRequest
0 голосов
/ 08 января 2020

У меня есть Winston, настроенный на 3 транспорта: Console, File и Loggly (используя https://github.com/loggly/winston-loggly-bulk).

В то время как консоль и файл транспортируют журнал правильно, мой транспорт Loggly регистрирует только мой первоначальный журнал «Сервер прослушивает порт 3001» и ничего больше, и я не понимаю, почему.

logger-utils.ts:

import * as winston from 'winston';
import { Loggly } from 'winston-loggly-bulk';

export const createLogger = () => {
  return winston.createLogger({
    format: winston.format.combine(
      winston.format.errors({ stack: true }),
      winston.format.timestamp({
        format: 'YYYY-MM-DD HH:mm:ss ZZ',
      }),
      winston.format.json(),
    ),
    transports: [
      new winston.transports.Console({
        level: process.env.LOGGING_LEVEL,
      }),
      new winston.transports.File({ filename: `logs/my-app.log` }),
      new Loggly({
        token: '<token>',
        subdomain: '<subdomain>',
        tags: ['Winston-NodeJS'],
        json: true,
      }),
    ],
  });
};

logger.ts:

import { createLogger } from './logger-utils';

const logger = createLogger();

export default logger;

server.ts:

import app from './modules/app/app';
import logger from './core/logger/logger';

app.listen(PORT, () => {
  logger.info(`Server listening on port ${3001}`);
});

app.middleware .ts:

import logger from '../../core/logger/logger';

export const initializeApp = async (ctx: AppContext) => {
  logger.info('initializeApp', { ctx });
  ....

Итак, я запускаю сервер и запускаю поток, и когда я проверяю Консоль и Файл, я вижу, что он регистрирует оба сообщения в server.ts и app.middleware.ts. но когда я проверяю свою панель управления Loggly, я вижу только журнал из server.ts.

Мне кажется, что я упускаю что-то невероятно очевидное, но я не понимаю, почему он не регистрирует мою информацию в приложении. middleware.ts, несмотря на то, что я записываю свои данные в server.ts, и это имеет еще меньше смысла, если учесть, что и консольный, и файловый транспорты регистрируют все правильно.

Любые идеи о том, как решить эту проблему, чтобы мой Loggly транспорт работает как другие мои транспорты?

1 Ответ

1 голос
/ 08 января 2020

ctx объект имеет циклическую ссылку внутри и, возможно, сериализация не удалась в конце Loggly. Ведение журнала без объекта ctx должно решить проблему.

...