4

简而言之:可以将日志(通过整个节点API)与某个(动态)参考 ID 相关联吗?

[进一步解释]
因此,情况如下:我正在编写一个可能一次处理多达数百个请求的 API。它在 Node.js 和 Express 中实现。我在整个 API 中都有大量日志记录,每个日志都必须有一个唯一的参考 ID,以便我可以将多个日志与同一个请求相关联。

我可以做到这一点的一种方法是随机生成一个字符串并将其作为参数传递给每个函数调用(我将其作为最后的手段)。我不想这样做

重申一下,

  • 请求进来
  • 随机生成字符串:aljsndci.json
  • 附加(表达)request.body 到aljsndci.json
  • 在 API 中做内部逻辑
    • json格式的log,每条log必须包含key{ ... file: 'aljsndci.json' ... }
  • 附加(表达)响应aljsndci.json
  • 通过快递回复

我偶然发现了continuation-local-storage 之类的解决方案,但是,如何生成一个唯一的字符串(用于命名空间),然后稍后引用相同的字符串?这里的所有示例都对命名空间的字符串进行了硬编码。是否有示例,类似于此处的示例(在此处找到

var getNamespace = require('continuation-local-storage').getNamespace;
var session = getNamespace('my session');

var render = require('./lib/render.js')

function finish(response) {
  var user = session.get('user');
  render({user: user}).pipe(response);
}

var session = getNamespace('my session');从现在开始,它实际上调用了一系列回调的名称,而不是?就像是var thisNamespace = getNamespace(this);

基本上,如果我可以global为每个后续回调设置一个变量,那将解决这个问题

4

1 回答 1

2

我认为这个问题解决了同样的问题: How to identify request (by ID) through middleware chain in Express。 检查它,如果您有任何疑问,请在此处或其他问题中说出来。

于 2017-12-04T10:04:19.100 回答