首頁 > 後端開發 > Golang > 主體

Golang 自訂 ServeHTTP 狀態日誌記錄

WBOY
發布: 2024-02-11 12:54:08
轉載
1234 人瀏覽過

Golang 自定义 ServeHTTP 状态日志记录

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中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!