Maison >développement back-end >Golang >Comment puis-je enregistrer efficacement les requêtes et les réponses HTTP dans Go avec Gorilla Mux ?
Consignation des réponses HTTP avec Go et Gorilla
Lors de la création d'applications Web complexes avec Go et la boîte à outils Web Gorilla, journalisation des requêtes et des réponses HTTP est essentiel pour le débogage et l’analyse. Bien que la journalisation des demandes soit simple à l'aide de LoggingHandler de Gorilla, la journalisation des réponses pose un défi.
Consignation des réponses
La solution fournie par Eric Broda enregistre efficacement les réponses, mais ce n'est pas le cas. envoyer la réponse au client. Voici une version modifiée qui conserve les fonctionnalités du code d'origine tout en garantissant que la réponse parvienne au client :
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)) // this copies the recorded response to the response writer for k, v := range rec.HeaderMap { w.Header()[k] = v } w.WriteHeader(rec.Code) rec.Body.WriteTo(w) } }
Pour utiliser cette fonction, enveloppez simplement votre fonction de gestionnaire avec logHandler :
http.HandleFunc("/", logHandler(myHandler))
Cette modification garantit que les demandes et les réponses sont enregistrées tout en fournissant correctement la réponse au client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!