Maison > développement back-end > Golang > Comment puis-je enregistrer efficacement les requêtes et les réponses HTTP dans Go avec Gorilla Mux ?

Comment puis-je enregistrer efficacement les requêtes et les réponses HTTP dans Go avec Gorilla Mux ?

Susan Sarandon
Libérer: 2024-12-03 00:06:14
original
397 Les gens l'ont consulté

How Can I Effectively Log Both HTTP Requests and Responses in Go with 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)
    }
}
Copier après la connexion

Pour utiliser cette fonction, enveloppez simplement votre fonction de gestionnaire avec logHandler :

http.HandleFunc("/", logHandler(myHandler))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal