Проблемы при входе в amazon cloud watch с помощью winston при использовании транспорта winston- aws -cloudwatch - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над лямбда-проектом, и для ведения журнала я использую winston и winston-aws-cloudwatch для записи данных в cloud watch. Я не получаю логи, которые должен был получить, ошибок нет, другие транспортеры, такие как Console и File, работают. Это мой код

const winston = require('winston');
const CloudWatchTransport = require('winston-aws-cloudwatch');

const logger = winston.createLogger({
  levels: winston.config.npm.levels,
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
});

// local logging
if (process.env.LAMBDA_STAGE === 'dev') {
  logger.add(
    new winston.transports.Console({
      format: winston.format.combine(winston.format.colorize({ all: true })),
      level: 'debug',
    })
  );
  logger.add(new winston.transports.File({ filename: 'logs/requests.log' }));
  logger.add(new winston.transports.File({ filename: 'logs/error.log', level: 'error' }));
}

if (process.env.LAMBDA_STAGE !== 'dev') {
  // for log stream naming - one log stream per hour to log
  const today = new Date();
  const logStreamName = `${today.getFullYear()}-${today.getMonth()}-${today.getDate()}-${today.getHours()}`;

  const loggerCWOptions = {
    logGroupName: process.env.REQUEST_LOG_GROUP_NAME,
    logStreamName,
    createLogGroup: false,
    createLogStream: true,
    awsConfig: {
      accessKeyId: process.env.CW_ACCESS_KEY_ID,
      secretAccessKey: process.env.CW_SECRET_ACCESS_KEY,
      region: process.env.CW_REGION
    },
    formatLog: (item) => `${item.level}: ${item.message}}`
  };

  // request cloudwatch
  logger.add(new CloudWatchTransport(loggerCWOptions));

  // error cloudwatch
  logger.add(new CloudWatchTransport({
    ...loggerCWOptions,
    logGroupName: process.env.ERROR_LOG_GROUP_NAME
  }));
}

logger.on('finish', (info) => {
  console.log('Finished: ', info);
});

logger.on('error', (err) => {
  console.log('Error: ', err);
});

module.exports = logger;

Может ли кто-нибудь увидеть какие-либо проблемы с моим кодом или что-то, что я здесь пропустил?

  • Проект является лямбда-проектом
  • Попадание туда, где у меня лог
    logger.log({
      message: `Cannot find ${req.method} endpoint for ${req.path}`,
      level: 'error',
    });

    console.log('Come on logger boy???'); // this prints in lambda cloud watch stream
  • дало полное разрешение соответствующей роли
...