php小編香蕉為您介紹Golang自訂ServeHTTP狀態日誌記錄。在Golang中,ServeHTTP函數是用來處理HTTP請求的關鍵函數之一。透過自訂ServeHTTP函數,我們可以記錄並追蹤每個請求的狀態信息,以便更好地了解和調試我們的應用程式。本文將詳細介紹如何在Golang中自訂ServeHTTP函數,並實現狀態日誌記錄的功能,以提升我們的開發效率和應用程式的穩定性。無論您是初學者還是有經驗的開發者,本文都將幫助您更好地理解和應用Golang的ServeHTTP函數。
我正在建立自己的網路框架,並且遇到了問題,當我嘗試使用回應狀態碼記錄請求時,我收到錯誤:無效的記憶體位址或零指標取消引用 p>
我的 ServeHTTP 函數:
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { handler := r.getHandler(req.Method, req.URL.Path) if handler == nil { notFoundHandler(w, req) return } done := make(chan struct{}) reqStruct := newReqStruct(w, req) go func() { handler(reqStruct) done <- struct{}{} close(done) }() <-done logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
}
這一行:
logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
req.Response
只會針對 HTTP 重定向進行填入。在這種情況下,它將為零。
如果您想捕獲響應代碼,請編寫一個包裝響應編寫器並實現 WriteHeader
來捕獲響應代碼。
以上是Golang 自訂 ServeHTTP 狀態日誌記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!