收到请求后,使用morgan记录POST正文大小

时间:2018-07-18 19:35:01

标签: node.js api express post morgan

我正在使用'morgan'库记录我的请求,时间和响应的大小。

但是,对于POST请求,有没有一种方法可以记录接收到的POST请求及其主体大小?

4 个答案:

答案 0 :(得分:2)

您可以使用morgan-body,它捕获所有请求类型,无论是发布还是获取

import morganBody from 'morgan-body';
import express from 'express';
import bodyParser from 'body-parser';

const app = express();

// must parse body before morganBody as body will be logged
app.use(bodyParser.json());

// hook morganBody to express app
morganBody(app);

答案 1 :(得分:1)

浏览morgan文档大约一个小时后,我找到了解决该问题的好方法。

可以使用morgan-body库本身在请求时进行日志记录,而不必使用morgan。甚至POST正文的长度也可以很容易地记录下来。

这是可以完成的方法:

app.use(morgan({format: 'POST body length in bytes :req[Content-Length]', immediate: true}))

此处的“格式”选项定义了日志的格式,“即时”选项在收到请求时写入了日志

答案 2 :(得分:1)

您可以编写自己的中间件

 app.use((req, res, next) => {
    console.log(req.body);
    next();
  });

您还可以检查请求是POST还是PUT等。

if (req.method === "POST") {
       // log the budy
    }

答案 3 :(得分:0)

使用Morgan模块中的自定义令牌格式

为主体创建令牌,然后将其添加到您的格式中。

这是您需要添加到app.js中的有效示例代码段

morgan.token('body', function (req, res) { return JSON.stringify(req.body) }); app.use(morgan(':method :url :status :response-time ms - :res[content-length] :body - :req[content-length]'));