gpt4 book ai didi

json - 如何使用 Winston/Morgan 记录 JSON HTTP 响应

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:46 27 4
gpt4 key购买 nike

我使用 Winston 和 Morgan 进行 Sails.js 中的所有后端日志记录,并且我需要能够记录来自 HTTP get 请求的响应。我需要将它们记录在文件中。我的日志文件当前显示所有 http 请求,但不显示响应。我已经搜索了 morgan 和 winston 的所有选项,但找不到执行此操作的方法/选项。我只是想知道你们中有人对如何实现这一目标有什么建议吗?谢谢!

最佳答案

您可以为 ExpressJS 编写一个中间件函数,该函数将在发送响应后记录正文。它基于 Node 的 http module查看 Connect(以及 Express)如何管理响应主体(这是一个流):您可以 Hook 写入该流的两个方法以获取 block ,然后连接/解码它们以记录它。简单的解决方案,可以变得更强大,但它表明这个概念是有效的。

function bodyLog(req, res, next) {
var write = res.write;
var end = res.end;
var chunks = [];

res.write = function newWrite(chunk) {
chunks.push(chunk);

write.apply(res, arguments);
};

res.end = function newEnd(chunk) {
if (chunk) { chunks.push(chunk); }

end.apply(res, arguments);
};

res.once('finish', function logIt() {
var body = Buffer.concat(chunks).toString('utf8');

// LOG BODY
});

next();
}

然后在主应用程序路由器中分配任何路由之前进行设置:

app.use(bodyLog);
// assign routes

我假设您也可以使用它作为 Morgan 中变量的赋值,但我还没有研究异步变量赋值如何工作。

关于json - 如何使用 Winston/Morgan 记录 JSON HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296190/

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