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

DDD
Lepaskan: 2024-10-31 01:42:29
asal
965 orang telah melayarinya

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

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

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

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!

sumber:php.cn
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!