Améliorations de la journalisation des réponses HTTP
La journalisation des requêtes HTTP est un aspect crucial du débogage et de la surveillance des performances. Bien qu'il existe des solutions comme LoggingHandler de Gorilla pour la journalisation des demandes, la journalisation des réponses est souvent une tâche négligée.
Pour résoudre ce problème, explorons une version modifiée de la réponse acceptée d'Eric Broda qui enregistre les réponses et les transmet 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)) // Forward the response to the client for k, v := range rec.HeaderMap { w.Header()[k] = v } w.WriteHeader(rec.Code) rec.Body.WriteTo(w) } }
Cette fonction modifiée permet d'obtenir les résultats suivants :
En intégrant cette fonction modifiée dans votre application, vous pouvez enregistrer de manière transparente les demandes et les réponses, offrant une vue complète de votre HTTP communiquer.
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!