收到请求时使用摩根记录 POST 正文大小

Sha*_*tal 6 api post node.js express morgan

我正在使用“摩根”库来记录我的请求、所需的时间和响应的大小。

但是,对于 POST 请求,有没有办法在接收到 POST 请求时记录它及其正文大小?

小智 20

  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]'));
Run Code Online (Sandbox Code Playgroud)


Sha*_*tal 6

在浏览了摩根文档大约一个小时后,我找到了一个很好的解决方案。

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

这是如何做到的:

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

这里的 'format' 选项定义日志的格式,'immediate' 选项在收到请求时写入日志