Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Log Ralat 404 Apabila Menggunakan Pelayan Fail HTTP?
Status Log 404 pada Fail Hilang dengan Pelayan Fail HTTP
Apabila menyampaikan fail menggunakan http.FileServer, permintaan untuk fail yang tidak wujud boleh kembali kod status 404 tanpa dilog pada konsol pelayan. Ini boleh menjadikannya mencabar untuk menjejak dan menyelesaikan masalah fail yang hilang.
Penyelesaian
Untuk melog ralat HTTP 404, tingkatkan kefungsian pengendali yang dikembalikan oleh http.StripPrefix() dan http.FileServer():
Pengendali yang dibungkus akan memanggil pengendali asal dan mencatat kod ralat HTTP 404 atau lebih tinggi selepas menerima respons. Kod contoh di bawah menunjukkan pelaksanaan lengkap:
<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>
Apabila fail yang tidak wujud diminta, pengendali yang dibalut akan mencatat ralat berikut:
2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
Atas ialah kandungan terperinci Bagaimana untuk Log Ralat 404 Apabila Menggunakan Pelayan Fail HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!