Pengelogan status ServeHTTP tersuai Golang

WBOY
Lepaskan: 2024-02-11 12:54:08
ke hadapan
1234 orang telah melayarinya

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)
Salin selepas log masuk

}

Penyelesaian

Baris ini:

logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!