morgan , pino是 node.js 日志中间件。我想将日志导出到 AWS cloudWatchLogs。
例如
morgan对于express:
var express = require('express');
var loggerM= require('morgan');
var app = express();
app.use(logger('dev'));
使用此设置,您可以在终端上看到日志。但是只能在终端显示,不知道怎么获取日志字符串,只好拿到日志字符串传到云端。
我目前只找到stream方法,只能直接保存到本地文件:
const appLogStream = fs.createWriteStream(path.join(__dirname, 'app.log'), { flags: 'a' })
app.use(morgan('combined', { stream: appLogStream}));
AWS cloudWatchLogs putLogEventsapi:
var params = {
logEvents: [ /* required */
{
message: 'STRING_VALUE', /* required */
timestamp: 'NUMBER_VALUE' /* required */
},
/* more items */
],
logGroupName: 'STRING_VALUE', /* required */
logStreamName: 'STRING_VALUE', /* required */
sequenceToken: 'STRING_VALUE'
};
cloudwatchlogs.putLogEvents(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
参数message可以填写日志信息。