Kurz und knapp: Kann man Protokolle (über eine ganze API) einer bestimmten (dynamischen) Referenz-ID zuordnen?Node.js protokolliert mehrere Anfragen mit relativen IDs
[Erklärung weiter]
So, hier ist die Situation: Ich eine API schreibe, die möglicherweise auf Griffe, um Hunderte von Anfragen auf einmal. Es ist in Node.js und Express implementiert. Ich habe umfangreiche Protokollierung über die API und jedes Protokoll muss eine eindeutige Referenz-ID haben, so dass ich mehrere Protokolle auf die gleiche Anfrage beziehen kann.
Eine Möglichkeit, dies zu tun ist, indem ich zufällig eine Zeichenfolge erzeuge und sie als Parameter an jeden Funktionsaufruf übergebe (ich behalte dies als letzten Ausweg). Ich will nicht, dies zu tun
Um es zu wiederholen,
- Anfrage kommt in
- Zeichenfolge zufällig generieren:
aljsndci.json
- append (Express) request.body zu
aljsndci.json
- tun interne Logik in API
- Anmelden im JSON-Format Jeder Protokollschlüssel
{ ... file: 'aljsndci.json' ... }
- Anmelden im JSON-Format Jeder Protokollschlüssel
- append (Express) als Reaktion auf
aljsndci.json
- Antwort durch ausdrückliche
ich auf Lösungen wie continuation-local-storage aber, wie generiert man eine eindeutige Zeichenfolge gestolpert enthalten muss (für Namespace) und verweisen Sie später auf diese Zeichenfolge? Alle Beispiele hier codieren die Zeichenfolge für den Namespace hart. Gibt es hier ein Beispiel ähnlich ist (gefunden 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);
}
wo statt var session = getNamespace('my session');
, ruft sie tatsächlich die Namen der Reihe von Rückrufen von diesem Punkt an? So etwas wie var thisNamespace = getNamespace(this);
Grundsätzlich, wenn ich eine global
Variable für jeden nachfolgenden Rückruf einstellen könnte, würde dieses Problem lösen
Mit Express.js, Req ist in jeder Midware verfügbar. Sie könnten es verwenden, indem Sie beispielsweise Ihre generierte eindeutige ID in req.uniqueId eingeben. –