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



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

但是,对于POST请求,有没有一种方法可以在收到POST请求时记录其正文大小?

  1. 使用Morgan模块中的自定义令牌格式
  2. 为body创建一个令牌,然后将其添加到您的格式中

以下是您需要添加到app.js:中的工作示例代码片段

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

在阅读了大约一个小时的morgan文档后,我找到了一个很好的问题解决方案。

日志记录可以在请求时使用morgan库本身来完成,而不是使用morganbody。甚至POST主体的长度也可以很容易地记录下来。

以下是如何做到这一点:

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

这里的"格式"选项定义日志的格式,"立即"选项在收到请求时写入日志

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

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);

您可以编写自己的中间件

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

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

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

最新更新