editor php Banana memperkenalkan anda kepada pengelogan status ServeHTTP tersuai Golang. Di Golang, fungsi ServeHTTP ialah salah satu fungsi utama yang digunakan untuk mengendalikan permintaan HTTP. Dengan menyesuaikan fungsi ServeHTTP, kami boleh merekod dan menjejaki maklumat status setiap permintaan untuk lebih memahami dan menyahpepijat aplikasi kami. Artikel ini akan memperkenalkan secara terperinci cara untuk menyesuaikan fungsi ServeHTTP di Golang dan melaksanakan fungsi pengelogan status untuk meningkatkan kecekapan pembangunan dan kestabilan aplikasi kami. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan membantu anda memahami dan menggunakan fungsi ServeHTTP Golang dengan lebih baik.
Saya sedang membina rangka kerja web saya sendiri dan saya menghadapi masalah, apabila saya cuba log permintaan dengan kod status respons, saya mendapat ralat: Alamat memori tidak sah atau penolakan penunjuk nol p>
Fungsi ServeHTTP Saya:
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)
}
Baris ini:
logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
req.Response
Hanya akan diisi untuk ubah hala HTTP. Dalam kes ini ia akan menjadi sifar.
Jika anda ingin menangkap kod respons, tulis penulis respons pembalut dan laksanakan WriteHeader
untuk menangkap kod respons.
Atas ialah kandungan terperinci Pengelogan status ServeHTTP tersuai Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!