使用HTTP 檔案伺服器記錄遺失檔案的404 狀態
使用http.FileServer 提供檔案時,對不存在檔案的請求可能會傳回未登入伺服器控制台的404 狀態代碼。這使得追蹤和排除遺失文件的問題變得困難。
解決方案
要記錄HTTP 404 錯誤,請增強http.StripPrefix() 傳回的處理程序的功能和http.FileServer():
包裝的處理程序將呼叫原始處理程序並在收到回應後記錄 HTTP 404 或更高的錯誤代碼。下面的範例程式碼示範了完整的實作:
<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>
當請求不存在的檔案時,包裝的處理程序會記錄以下錯誤:
2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
以上是使用 HTTP 檔案伺服器時如何記錄 404 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!