2017-08-04 3 views
0

Ich habe eine REST-API in Node.js/Hapi geschrieben und arbeite daran, Logging hinzuzufügen und diese in einen zentralisierten Protokolldienst wie Splunk zu integrieren.Zugriff auf Hapi-Request-ID, ohne das Request-Objekt überall zu übergeben?

Was ich möchte eine einfache Protokollierung util tun können, ist schreiben, so dass der Code an beliebiger Stelle in ich so etwas tun können:

LoggingUtil.log('some message');

und die LoggingUtil, um herauszufinden, wären in der Lage welche Anfrage es betrifft und das in die eigentliche Nachricht aufnimmt, die protokolliert wird. Auf diese Weise, wenn ich die Protokolle suche, wird die Anforderungs-ID alle Protokolle verknüpfen, die zu einer spezifischen Anfrage gehören.

Ich bin nicht sehr vertraut mit der Ereignisschleife in Node und wie ich dies erreichen könnte. Die einzige Sache, die ich gefunden habe, könnte funktionieren tick-id

Antwort

0

Ich bin mir nicht sicher, was Sie genau meinen, aber ich gebe 2 Vorschläge basierend darauf, ob Sie die ganze Zeit oder nur zum Debuggen protokollieren möchten.

  1. Anmeldung die ganze Zeit am Beispiel Hapi Lebenszyklus Methode

    server.ext('onRequest', (request, reply) => { 
    console.log(`\n++++++ ${request.raw.req.method} ${request.raw.req.url} ++++++\n`); 
    reply.continue(); 
    }); 
    

onRequest bedeutet jedes Mal gibt es eine Anforderung, wird diese Funktion aufgerufen. für meine habe ich es die Anfrage Methode und URL protokolliert. Sie können das Anfrageobjekt beobachten, um die gewünschten Informationen zu erhalten.

  1. Protokollierung nur für

grundsätzlich gleiche Logik debuggen, das Request-Objekt übergeben und Zugriff auf die Informationen, die Sie von dort brauchen.

In Ihrer Protokollfunktion: log(request) { console.log(WHATEVER_YOU_NEED) }

Verwandte Themen