我正在使用'morgan'库记录我的请求,时间和响应的大小。
但是,对于POST请求,有没有一种方法可以记录接收到的POST请求及其主体大小?
答案 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]'));