Ich verwende node.js und express, um HTTP-Anfragen und -Antworten zu bearbeiten. Mit dem http.ServerRequest
-Ereignis kann ich HTTP-Anfragen hinzufügen und protokollieren. Es scheint kein ähnliches Ereignis für http.ServerResponse
zu geben und ich frage mich, wie ich alle HTTP-Antworten mit einem Codeabschnitt protokollieren kann, den mein Server sendet?
Ich habe aus einem ähnlichen Bedürfnis ein Paket erstellt, das so etwas tut. Schauen Sie sich express-request-logger
anDas Herz des Programms ist so, es enthält zusätzlichen Code, so dass Sie Ihre eigene Schlüssel-Wert-Karte von Daten haben können, die pro Anfrage protokolliert werden:
%Vor%Der obige Code läuft als Middleware in Express. Schau dir den Code an, und wenn du weitere Fragen hast, kontaktiere mich hier oder github.
Es wird nicht mehr benötigt, um monkeypatch zu sein, solange ein finish -Ereignis auf end () - Funktion seit node.js 0.8.12.
Tatsächlich wurde es ursprünglich als Ende in 0.8.8 veröffentlicht auch dies ), aber Es hat die Duplex-Dateien von schreibbaren Streams zerstört , also wurde es umbenannt, um es zu beenden.
Wenn Sie nur (Anfragen und / oder Antworten) protokollieren möchten, besuchen Sie express-winston . Im Gegensatz zu morgan kann der Request / Response-Body sogar protokolliert werden.
Beispiel in coffeescript:
%Vor%Wenn Sie Express 'res.send () für alle Antworten verwenden und es Ihnen nichts ausmacht, Code in das Express-Modul einzufügen, können Sie einfügen in
... / Knoten_Module / express / lib / response.js:
%Vor%Ich glaube nicht, dass Sie auf ein Nicht-Fehler-Ereignis warten können - "Schließen" scheint nicht auf res.send (); Ich schätze, weil send () immer irgendwo in Ihrem Code aufgerufen wird.