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>
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>
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!