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

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

Barbara Streisand
Libérer: 2024-12-05 21:57:12
original
766 Les gens l'ont consulté

How Can I Effectively Log Both HTTP Requests and Responses in Go?

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)
    }
}
Copier après la connexion

Cette fonction modifiée permet d'obtenir les résultats suivants :

  • Enregistre la demande comme avant.
  • Crée un httptest.NewRecorder pour capturer la réponse.
  • Appelle la fonction de gestionnaire d'origine, qui écrit la réponse dans l'enregistreur.
  • Enregistre la réponse du enregistreur.
  • Copie les en-têtes et le code d'état de l'enregistreur dans la réponse réelle rédacteur.
  • Transmet le corps de l'enregistreur au client.

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!

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