Heim >Backend-Entwicklung >Golang >Wie kann ich sowohl HTTP-Anfragen als auch -Antworten in Go effektiv protokollieren?
Verbesserungen bei der Protokollierung von HTTP-Antworten
Die Protokollierung von HTTP-Anfragen ist ein entscheidender Aspekt des Debuggens und der Leistungsüberwachung. Während es Lösungen wie den LoggingHandler von Gorilla für die Protokollierung von Anfragen gibt, wird die Protokollierung von Antworten oft übersehen.
Um dieses Problem zu beheben, schauen wir uns eine modifizierte Version der akzeptierten Antwort von Eric Broda an, die sowohl Antworten protokolliert als auch an den Client weiterleitet:
func logHandler(fn http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { x, err := httputil.DumpRequest(r, true) if err != nil { http.Error(w, fmt.Sprint(err), http.StatusInternalServerError) return } log.Println(fmt.Sprintf("%q", x)) rec := httptest.NewRecorder() fn(rec, r) log.Println(fmt.Sprintf("%q", rec.Body)) // Forward the response to the client for k, v := range rec.HeaderMap { w.Header()[k] = v } w.WriteHeader(rec.Code) rec.Body.WriteTo(w) } }
Diese modifizierte Funktion erreicht Folgendes:
Durch die Integration dieser modifizierten Funktion in Ihre Anwendung können Sie sowohl Anfragen als auch Antworten nahtlos protokollieren und so eine umfassende Ansicht Ihres HTTP bereitstellen Kommunikation.
Das obige ist der detaillierte Inhalt vonWie kann ich sowohl HTTP-Anfragen als auch -Antworten in Go effektiv protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!