Golang custom ServeHTTP status logging

WBOY
Release: 2024-02-11 12:54:08
forward
1234 people have browsed it

Golang 自定义 ServeHTTP 状态日志记录

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.

Question content

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)
Copy after login

}

Solution

This line:

logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!