Maison >développement back-end >Golang >Comment enregistrer les erreurs 404 lors de l'utilisation du serveur de fichiers HTTP ?
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() :
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!