Heim > Backend-Entwicklung > Golang > Wie protokolliere ich sowohl Anforderungs- als auch Antwortdaten in Go?

Wie protokolliere ich sowohl Anforderungs- als auch Antwortdaten in Go?

DDD
Freigeben: 2024-11-06 14:37:02
Original
680 Leute haben es durchsucht

How to Log Both Request and Response Data in Go?

HTTP-ResponseWriter-Daten protokollieren

In Go kann sich die gleichzeitige Protokollierung von Anforderungs- und Antwortdaten als Herausforderung erweisen. Um dieses Problem zu beheben, sollten Sie die Verwendung von io.MultiWriter in Betracht ziehen, der alle Schreibvorgänge an mehrere Autoren dupliziert.

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

Mit diesem Setup dupliziert rsp Schreibvorgänge sowohl an w (den Antwortschreiber) als auch an den Protokollpuffer. Der Inhalt des Protokollpuffers kann dann zu Protokollierungszwecken erfasst werden.

Eine weitere Option besteht darin, io.TeeReader zu verwenden, um Lesevorgänge aus dem Anforderungstext zu duplizieren. Dadurch wird sichergestellt, dass auch die Anforderungsnutzlast protokolliert wird.

<code class="go">func api1(w http.ResponseWriter, req *http.Request) {
    var log bytes.Buffer
    tee := io.TeeReader(req.Body, &log)
    err := json.NewDecoder(tee).Decode(&requestData)
    ...
}</code>
Nach dem Login kopieren

In diesem Szenario liest json.Decoder vom Tee und kopiert so effektiv den Anforderungstext in den Protokollpuffer.

Durch Implementierung dieser Techniken können Sie aussagekräftige Protokolle schreiben, die sowohl Anforderungs- als auch Antwortdaten erfassen und so wertvolle Informationen für die Fehlerbehebung und Fehlerbehebung bereitstellen.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich sowohl Anforderungs- als auch Antwortdaten 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage