Maison > développement back-end > Golang > le corps du texte

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

Barbara Streisand
Libérer: 2024-10-27 03:12:30
original
760 Les gens l'ont consulté

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

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

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!