gpt4 book ai didi

node.js 表示请求 ID

转载 作者:IT老高 更新时间:2023-10-28 23:17:34 27 4
gpt4 key购买 nike

我正在尝试创建某种用于记录目的的请求 ID,我可以通过请求流中的每个函数使用它。我想用 Id 记录请求流的每一步,说明哪个日志行是针对哪个请求的。

我查看了一些想法并遇到了 2 个主要建议:

首先是创建一个中间件,它将像这样在“req”对象中添加一个字段(如建议 here):

var logIdIterator = 0;

app.all('*', function(req, res, next) {
req.log = {
id: ++logIdIterator
}
return next();
});

第二个是使用continuation-local-storage

问题是:

对于第一种方法 - 这意味着我必须向流程中的每个函数传递一个额外的参数,这对于具有无数 API 和流程的成熟应用程序来说并不是一个简单的解决方案。

第二个看起来很有希望,但不幸的是它存在一些状态丢失的问题(例如,参见 here)。此外,当我们使用我们的 redis 库时,它发生了几次 - 这很糟糕,因为 redis 请求发生在我们的每个流上。

我想如果我找不到其他解决方案,我将不得不使用第一种方法,只是我想避免将额外的参数传递给数千个现有函数。

我的问题是 - 您建议如何通过请求流维护请求 ID?

最佳答案

您可以使用这个包:https://www.npmjs.com/package/express-request-id

这是为每个请求附加 uuid 的中间件

var app = require('express')();
var addRequestId = require('express-request-id')();

app.use(addRequestId);

app.get('/', function (req, res, next) {
res.send(req.id);
next();
});

app.listen(3000, function() {
console.log('Listening on port %d', server.address().port);
});

// curl localhost:3000
// d7c32387-3feb-452b-8df1-2d8338b3ea22

关于node.js 表示请求 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37549807/

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