localstack aws cloudwatch 日志

localstack Aws cloudwatch logs

如何使用节点将日志发送到 localstack cloudwatch logs。

我正在使用 npm

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

基于这个例子https://github.com/lazywithclass/winston-cloudwatch/blob/747ae3c2292fdae6c046394938f159b4c7a23802/examples/simple.js

var winston = require('winston'),
WinstonCloudWatch = require('../index');


// when you don't provide a name the default one
// is CloudWatch
winston.add(new WinstonCloudWatch({
  logGroupName: 'testing',
  logStreamName: 'first',
  awsRegion: 'us-east-1'
}));

winston.error('1');

高级示例使用 winston-cloud

https://github.com/lazywithclass/winston-cloudwatch/blob/747ae3c2292fdae6c046394938f159b4c7a23802/examples/multiple-loggers.js

您可能应该使用 winston-cloudwatch 而不是 winston-aws-cloudwatch,因为它被更多地使用和维护。但由于选择是您的,如果您仍然想使用 winston-aws-cloudwatch,您可以将 awsConfig 中的端点添加到 http://localhost:4586,因为默认情况下 localstack 使用 4586 作为 cloudwatch 的端口。

winston-cloudwatch 的示例如下。

const AWS = require('aws-sdk');
const WinstonCloudWatch = require('winston-cloudwatch');
 
winston.add(new WinstonCloudWatch({
  awsRegion: 'us-east-1',
  logGroupName: 'your-log-group-name',
  logStreamName: 'your-log-stream-name',
  jsonMessage: true,
}));

winston.info('I am done');

const AWS = require('aws-sdk');
const WinstonCloudWatch = require('winston-cloudwatch');

const logger = winston.createLogger({
  transports: [
    new WinstonCloudWatch({
      logGroupName: 'log-group-name',
      logStreamName: 'log-stream-name',
      awsRegion: 'us-east-1',
      jsonMessage: true
    })
  ]
});

logger.error('I am done');

代码段可能以 Invalid token error 结尾。您可以使用 awslocal iam 创建 IAM 用户并使用该用户创建访问密钥并使用它。

如果你想玩 localstack

,你可能需要安装 awslocal

要验证日志组是否已创建,您可以尝试 awslocal logs describe-log-groups

其他CLI命令可以参考AWS CLI documetation

对于本地,您可以将 aws 替换为 awslocal