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

Journalisation de l'état ServeHTTP personnalisée Golang

WBOY
WBOYavant
2024-02-11 12:54:081260parcourir

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)

}

Solution

Cette ligne :

logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer