Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengelogan status ServeHTTP tersuai Golang

Pengelogan status ServeHTTP tersuai Golang

WBOY
WBOYke hadapan
2024-02-11 12:54:081213semak imbas

Golang 自定义 ServeHTTP 状态日志记录

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.

Kandungan soalan

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)

}

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam