2016-04-25 53 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中來使用它。 –

    回答