2016-04-25 66 views
4

简而言之::可以将某个(动态)引用ID关联日志(贯穿整个节点 API)吗?Node.js使用相对ID记录多个请求

[进一步解释]
所以,这里的情况是:我写一次潜在处理多达数百个请求的API。它在Node.js和Express中实现。我在整个API中都有广泛的日志记录,每个日志必须有一个唯一引用ID,以便我可以将多个日志关联到相同的请求。

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

要重申,

  • 请求进入
  • 随机生成的字符串:aljsndci.json
  • 追加(快递)request.body到aljsndci.json
  • 做内部API中的逻辑
    • 登录json格式,每个日志必须包含通快递

    我已经在像continuation-local-storage解决方案跌跌撞撞关键{ ... file: 'aljsndci.json' ... }

  • 追加(快递)响应aljsndci.json
  • 响应,但是,一个人如何生成一个唯一的字符串(对于命名空间),然后再引用相同的字符串?这里的所有例子都对命名空间的字符串进行了硬编码。是否有例如,类似于在这里的人(发现here

    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变量以后每回调,这将解决这个问题

  • +2

    有了Express.js,每个中间件都可以使用req。例如,您可以通过将您生成的唯一ID放入req.uniqueId中来使用它。 –

    回答