Wie protokolliere ich Antwortdaten von http.ResponseWriter in Go?

Patricia Arquette
Freigeben: 2024-11-06 01:41:02
Original
728 Leute haben es durchsucht

How to Log Response Data from http.ResponseWriter in Go?

Daten von http.ResponseWriter protokollieren

In Go können Sie verschiedene Techniken verwenden, um Daten zu protokollieren, die von einem HTTP-Anfrage-Antwort-Zyklus ausgegeben werden. Eine häufig gestellte Frage ist das Abrufen der in den http.ResponseWriter geschriebenen Daten zu Protokollierungszwecken.

Lösung: Verwendung von io.MultiWriter

Zur Erfassung der Antwortdaten können Sie Folgendes verwenden: den io.MultiWriter, um die Schreibvorgänge auf einen separaten Writer zu duplizieren. In Ihrem Code können Sie eine neue bytes.Buffer-Instanz als Protokollpuffer erstellen und diese als einen der Writer an io.MultiWriter übergeben. Indem Sie den MultiWriter als Antwortschreiber verwenden, können Sie die Antwortdaten in den Protokollpuffer duplizieren.

Codebeispiel:

<code class="go">import (
    "bytes"
    "io"
    "net/http"
)

func api1(w http.ResponseWriter, req *http.Request) {
    var log bytes.Buffer
    rsp := io.MultiWriter(w, &log)
    // Use rsp instead of w from this point onward
    // ...
}</code>
Nach dem Login kopieren

Der Protokollpuffer ( log) enthält eine Kopie der an den Antwortschreiber geschriebenen Antwortdaten.

Alternative Lösung: Verwendung von io.TeeReader

Zur Erfassung der Anforderungsdaten können Sie Folgendes verwenden: io.TeeReader. Es erstellt einen Reader, der alles, was er von einem bestimmten Reader liest, an einen bereitgestellten Writer schreibt. In diesem Fall können Sie damit eine Kopie des Anforderungstexts im Protokollpuffer speichern.

Codebeispiel:

<code class="go">import (
    "bytes"
    "io"
    "net/http"
)

func api1(w http.ResponseWriter, req *http.Request) {
    var log bytes.Buffer
    tee := io.TeeReader(req.Body, &log)
    // Use tee instead of req.Body from this point onward
    // ...
}</code>
Nach dem Login kopieren

Mit io.TeeReader, Der Protokollpuffer enthält eine Kopie des Inhalts des Anforderungstexts.

Durch die Verwendung dieser Techniken können Sie sowohl Anforderungs- als auch Antwortdaten protokollieren und so eine umfassende Protokollierung für API-Anfragen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich Antwortdaten von http.ResponseWriter in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!