gpt4 book ai didi

node.js - 有没有办法在 morgan 中记录响应正文?

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:57 25 4
gpt4 key购买 nike

我想将响应正文记录在我的日志文件中

我尝试过 morgan-body 但我想将响应记录在文件中而不是控制台中

以下代码将记录请求正文,那么有没有办法也记录响应?

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]', {
stream: logger.successLogStream,
skip: function (req, res) { return res.statusCode >= 400 }
}));

app.use(morgan(':method :url :status :response-time ms - :res[content-length] :body - :req[content-length]', {
stream: logger.errorLogStream,
skip: function (req, res) { return res.statusCode < 400 }
}));

例如,我想记录以下错误消息

return res.status(400).send({ "message": "Campaign id is not defined" })

最佳答案

你可以使用这个

const app = express()
const originalSend = app.response.send

app.response.send = function sendOverWrite(body) {
originalSend.call(this, body)
this.__custombody__ = body
}

morgan.token('res-body', (_req, res) =>
JSON.stringify(res.__custombody__),
)

...

app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(morgan(loggerFormat, { stream: logStream }))
app.use(...routers)

关于node.js - 有没有办法在 morgan 中记录响应正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com