Maison > développement back-end > Golang > Journalisation de l'état ServeHTTP personnalisée Golang

Journalisation de l'état ServeHTTP personnalisée Golang

WBOY
Libérer: 2024-02-11 12:54:08
avant
1264 Les gens l'ont consulté

Golang 自定义 ServeHTTP 状态日志记录

l'éditeur php Banana vous présente la journalisation du statut ServeHTTP personnalisée de Golang. Dans Golang, la fonction ServeHTTP est l'une des fonctions clés utilisées pour gérer les requêtes HTTP. En personnalisant la fonction ServeHTTP, nous pouvons enregistrer et suivre les informations d'état de chaque requête pour mieux comprendre et déboguer notre application. Cet article présentera en détail comment personnaliser la fonction ServeHTTP dans Golang et implémenter la fonction de journalisation de l'état pour améliorer notre efficacité de développement et la stabilité de nos applications. Que vous soyez débutant ou développeur expérimenté, cet article vous aidera à mieux comprendre et appliquer la fonction ServeHTTP de Golang.

Contenu de la question

Je construis mon propre framework Web et je rencontre un problème, lorsque j'essaie d'enregistrer une demande avec un code d'état de réponse, j'obtiens l'erreur : Adresse mémoire invalide ou déréférencement de pointeur nul p>

Ma fonction ServeHTTP :

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {

    handler := r.getHandler(req.Method, req.URL.Path)
    if handler == nil {
        notFoundHandler(w, req)
        return
    }
    done := make(chan struct{})

    reqStruct := newReqStruct(w, req)

    go func() {
        handler(reqStruct)
        done <- struct{}{}
        close(done)
    }()
    <-done
    logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Copier après la connexion

}

Solution

Cette ligne :

logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Copier après la connexion

req.Response Ne sera renseigné que pour les redirections HTTP. Dans ce cas, ce sera zéro.

Si vous souhaitez capturer le code de réponse, écrivez un rédacteur de réponse wrapper et implémentez WriteHeader pour capturer le code de réponse.

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal