Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh log 404 ralat apabila menggunakan `http.FileServer` untuk menyampaikan fail statik dalam Go?

Bagaimanakah saya boleh log 404 ralat apabila menggunakan `http.FileServer` untuk menyampaikan fail statik dalam Go?

DDD
DDDasal
2024-10-31 01:42:291010semak imbas

How can I log 404 errors when using `http.FileServer` to serve static files in Go?

Melog 404 Ralat untuk Http.FileServer

Apabila menyampaikan fail statik menggunakan http.FileServer, selalunya penting untuk log apabila permintaan dibuat untuk fail yang tidak wujud. Walaupun http.FileServer sendiri tidak menyediakan pengelogan sedemikian, memperluaskan fungsinya membolehkan anda mencapai matlamat ini.

Untuk membalut pengendali yang dikembalikan oleh http.StripPrefix dan http.FileServer, cipta http.Handler atau http baharu. HandlerFunc. Pembalut akan memanggil pengendali yang dibalut dan memeriksa kod status respons HTTP yang terhasil. Jika ia menunjukkan ralat (khususnya HTTP 404 Not Found), ia boleh log peristiwa itu.

Memandangkan http.ResponseWriter tidak menyokong membaca kod status respons, buat pembungkus untuknya (StatusRespWr). Pembungkus ini akan menyimpan kod status apabila ia ditulis.

Kod untuk pembungkus http.Handler kelihatan seperti ini:

<code class="go">func wrapHandler(h http.Handler) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        srw := &StatusRespWr{ResponseWriter: w}
        h.ServeHTTP(srw, r)
        if srw.status >= 400 { // 400+ codes are error codes
            log.Printf("Error status code: %d when serving path: %s",
                srw.status, r.RequestURI)
        }
    }
}</code>

Fungsi utama boleh mencipta pelayan fail, bungkusnya , dan daftarkannya:

<code class="go">http.HandleFunc("/o/", wrapHandler(
    http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
panic(http.ListenAndServe(":8181", nil))</code>

Apabila meminta fail yang tidak wujud, output berikut akan dijana dalam konsol:

2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2

Atas ialah kandungan terperinci Bagaimanakah saya boleh log 404 ralat apabila menggunakan `http.FileServer` untuk menyampaikan fail statik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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