Heim >Backend-Entwicklung >Golang >Wie protokolliere ich HTTP-Antworten in Go mit Middleware-Verkettung?
Als Antwort auf die in einem früheren Thread gestellte Frage schlägt dieser Artikel vor, HTTP-Antworten von Live-Servern ohne Umsortierung zu protokollieren zu gefälschten Anfragen. Das Ziel besteht darin, sowohl Header als auch JSON-Nutzlasten für eine gründliche Analyse zu erfassen.
Mithilfe des Konzepts der Middleware-Verkettung können wir einen benutzerdefinierten HTTP-Handler erstellen, der Antworten abfängt und relevante Informationen protokolliert. So geht's:
Mit Middleware-Chaining definieren Sie Middleware-Funktionen, die vor oder nach der Haupthandlerfunktion ausgeführt werden können. Diese Middlewares können verschiedene Aufgaben wie Protokollierung, Validierung oder Sicherheitsüberprüfungen ausführen.
Anstelle magischer Negroni-Lösungen können wir unsere eigenen funktionalen Handler-Kombinatoren definieren. Jeder Kombinator übernimmt eine bestimmte Aufgabe und kann zu einer Ausführungskette kombiniert werden. Sie könnten beispielsweise einen Kombinator für die Antwortprotokollierung erstellen:
<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // Replace response writer with a recorder for subsequent handlers c := httptest.NewRecorder() next(c, r) // Copy response from recorder to actual response writer for k, v := range c.HeaderMap { w.Header()[k] = v } w.WriteHeader(c.Code) c.Body.WriteTo(w) } }</code>
Um die Protokollierungs-Middleware auf alle Handler in einer bestimmten Kategorie anzuwenden, können wir einen Standard-Handler erstellen:
<code class="go">func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc { return NewResponseLoggingHandler(NewOtherStuffHandler(next)) }</code>
Dieser Kombinator stellt sicher, dass alle über NewDefaultHandler erstellten Ketten die Antwortprotokollierung zusammen mit allen anderen in NewOtherStuffHandler definierten Standardfunktionen umfassen.
Durch die Nutzung dieser Techniken können Sie HTTP-Antworten von nahtlos protokollieren Ihr Live-Webdienst, der wertvolle Erkenntnisse für die Fehlerbehebung und Analyse liefert.
Das obige ist der detaillierte Inhalt vonWie protokolliere ich HTTP-Antworten in Go mit Middleware-Verkettung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!