首頁 > 後端開發 > Golang > 使用 HTTP 檔案伺服器時如何記錄 404 錯誤?

使用 HTTP 檔案伺服器時如何記錄 404 錯誤?

Barbara Streisand
發布: 2024-10-27 03:12:30
原創
803 人瀏覽過

How to Log 404 Errors When Using HTTP File Server?

使用HTTP 檔案伺服器記錄遺失檔案的404 狀態

使用http.FileServer 提供檔案時,對不存在檔案的請求可能會傳回未登入伺服器控制台的404 狀態代碼。這使得追蹤和排除遺失文件的問題變得困難。

解決方案

要記錄HTTP 404 錯誤,請增強http.StripPrefix() 傳回的處理程序的功能和http.FileServer():

  1. 將原始處理程序包裝在自訂處理程序或處理程序函數中。
  2. 在包裝 http.ResponseWriter 的新 StatusRespWr 結構中重寫 WriteHeader() 方法。這使我們能夠捕獲 HTTP 狀態代碼。

包裝的處理程序將呼叫原始處理程序並在收到回應後記錄 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板