4

我正在使用morgan-body在我的 node.js/express 应用程序中记录 HTTP 请求和响应。此中间件创建的日志条目包含完整的请求和响应 HTTP 标头,这对于我的需要来说太冗长了。

这是我的摩根身体片段:

const express = require('express');
const app = express();
const parser = require('body-parser');
const morganBody = require('morgan-body');

// snipped configuration for other middleware
app.use(parser.json());
app.use(parser.urlencoded({ extended: false }));

morganBody(app, {
  noColors: true,
  maxBodyLength: 65535,
  stream: this.responseStream
});

由于现有的日志条目太冗长,我需要为它们创建自定义格式,即

timestamp: fruit-name: info: status: Pass message: no damage

“状态”和“消息”字段位于 response.body 中。

我已经用谷歌搜索了这个问题的解决方案,但我被困住了。morgan-body 有没有办法编写自定义消息?如果有可以实现我需要的替代中间件,那将是受欢迎的。

4

1 回答 1

11

不使用morgan-body,这可以使用morgan库轻松实现。

您可以通过创建自定义令牌来做到这一点。

这是一个可能的解决方案:

const express = require('express');
const app = express();
const morgan = require('morgan');

morgan.token('status', function (req, res) { return res.body.status })
morgan.token('message', function (req, res) { return res.body.message })
morgan.token('fruit-name', function (req, res) { return res.body.fruit-name })
morgan.token('timestamp', function (req, res) { return res.body.timestamp })


app.use(morgan('Timestamp\: :timestamp fruit-name\: :fruit-name Status\: :status Message\: :message'))

这应该为您的日志创建一个自定义字符串!

于 2018-07-18T21:43:32.357 回答