Maison >développement back-end >Golang >Comment enregistrer les erreurs 404 lors de l'utilisation du serveur de fichiers HTTP ?

Comment enregistrer les erreurs 404 lors de l'utilisation du serveur de fichiers HTTP ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 03:12:30805parcourir

How to Log 404 Errors When Using HTTP File Server?

Enregistrer l'état 404 sur les fichiers manquants avec le serveur de fichiers HTTP

Lors de la diffusion de fichiers à l'aide de http.FileServer, des requêtes pour des fichiers inexistants peuvent être renvoyées un code d'état 404 sans être connecté à la console du serveur. Cela peut rendre difficile le suivi et le dépannage des fichiers manquants.

Solution

Pour enregistrer les erreurs HTTP 404, améliorez les fonctionnalités des gestionnaires renvoyés par http.StripPrefix() et http.FileServer() :

  1. Enveloppez le gestionnaire d'origine dans un gestionnaire personnalisé ou une fonction de gestionnaire.
  2. Remplacez la méthode WriteHeader() dans une nouvelle structure StatusRespWr qui encapsule http.ResponseWriter . Cela nous permet de capturer le code d'état HTTP.

Le gestionnaire encapsulé appellera le gestionnaire d'origine et enregistrera les codes d'erreur HTTP 404 ou supérieurs après avoir reçu la réponse. L'exemple de code ci-dessous démontre une implémentation complète :

<code class="go">type StatusRespWr struct {
    http.ResponseWriter
    status int
}

func (w *StatusRespWr) WriteHeader(status int) {
    w.status = status
    w.ResponseWriter.WriteHeader(status)
}

func wrapHandler(h http.Handler) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        srw := &StatusRespWr{ResponseWriter: w}
        h.ServeHTTP(srw, r)
        if srw.status >= 400 {
            log.Printf("Error status code: %d when serving path: %s", srw.status, r.RequestURI)
        }
    }
}

func main() {
    http.HandleFunc("/o/", wrapHandler(
        http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
    panic(http.ListenAndServe(":8181", nil))
}</code>

Lorsqu'un fichier inexistant est demandé, le gestionnaire encapsulé enregistrera l'erreur suivante :

2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2

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:
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