泛舟湖上清波郎朗
http.ResponseWriter 是一个接口。您可以使用嵌入来扩展它以进行日志记录,如下所示。package mainimport ( "log" "net/http")func sampleHandler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) response := []byte("Sample Response") w.Write(response)}type loggingResponseWriter struct { status int body string http.ResponseWriter}func (w *loggingResponseWriter) WriteHeader(code int) { w.status = code w.ResponseWriter.WriteHeader(code)}func (w *loggingResponseWriter) Write(body []byte) (int, error) { w.body = string(body) return w.ResponseWriter.Write(body)}func responseLogger(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { loggingRW := &loggingResponseWriter{ ResponseWriter: w, } h.ServeHTTP(loggingRW, r) log.Println("Status : ", loggingRW.status, "Response : ", loggingRW.body) })}func main() { http.Handle("/", responseLogger(http.HandlerFunc(sampleHandler))) http.ListenAndServe(":8080", nil)}您可以使用 responseLogger 包装要记录响应的处理程序函数。