Peningkatan Respons HTTP Log
Melog permintaan HTTP ialah aspek penting dalam penyahpepijatan dan pemantauan prestasi. Walaupun terdapat penyelesaian seperti Gorilla's LoggingHandler untuk permintaan pengelogan, respons pengelogan selalunya merupakan tugas yang diabaikan.
Untuk menangani perkara ini, mari kita terokai versi diubah suai bagi jawapan Eric Broda yang diterima yang kedua-duanya mencatatkan respons dan memajukannya kepada pelanggan:
func logHandler(fn http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { x, err := httputil.DumpRequest(r, true) if err != nil { http.Error(w, fmt.Sprint(err), http.StatusInternalServerError) return } log.Println(fmt.Sprintf("%q", x)) rec := httptest.NewRecorder() fn(rec, r) log.Println(fmt.Sprintf("%q", rec.Body)) // Forward the response to the client for k, v := range rec.HeaderMap { w.Header()[k] = v } w.WriteHeader(rec.Code) rec.Body.WriteTo(w) } }
Fungsi diubah suai ini mencapai berikut:
Dengan menyepadukan fungsi yang diubah suai ini ke dalam aplikasi anda, anda boleh log lancar kedua-dua permintaan dan respons, memberikan pandangan menyeluruh tentang komunikasi HTTP anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Berkesan Kedua-dua Permintaan HTTP dan Respons dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!