Home >Backend Development >Golang >Golang custom ServeHTTP status logging
php editor Banana introduces Golang custom ServeHTTP status logging to you. In Golang, the ServeHTTP function is one of the key functions used to handle HTTP requests. By customizing the ServeHTTP function, we can record and track the status information of each request to better understand and debug our application. This article will introduce in detail how to customize the ServeHTTP function in Golang and implement the status logging function to improve our development efficiency and application stability. Whether you are a beginner or an experienced developer, this article will help you better understand and apply Golang's ServeHTTP function.
I'm building my own web framework and I'm running into a problem, when I try to log a request with a response status code I get the error: Invalid memory address or zero pointer dereference p>
My ServeHTTP function:
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)
}
This line:
logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
req.Response
will only be populated for HTTP redirects. In this case it will be zero.
If you want to capture the response code, write a wrapper response writer and implement WriteHeader
to capture the response code.
The above is the detailed content of Golang custom ServeHTTP status logging. For more information, please follow other related articles on the PHP Chinese website!