Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Log Ralat 404 Apabila Menggunakan Pelayan Fail HTTP?

Bagaimana untuk Log Ralat 404 Apabila Menggunakan Pelayan Fail HTTP?

Barbara Streisand
Barbara Streisandasal
2024-10-27 03:12:30805semak imbas

How to Log 404 Errors When Using HTTP File Server?

Status Log 404 pada Fail Hilang dengan Pelayan Fail HTTP

Apabila menyampaikan fail menggunakan http.FileServer, permintaan untuk fail yang tidak wujud boleh kembali kod status 404 tanpa dilog pada konsol pelayan. Ini boleh menjadikannya mencabar untuk menjejak dan menyelesaikan masalah fail yang hilang.

Penyelesaian

Untuk melog ralat HTTP 404, tingkatkan kefungsian pengendali yang dikembalikan oleh http.StripPrefix() dan http.FileServer():

  1. Balut pengendali asal dalam fungsi pengendali atau pengendali tersuai.
  2. Timpa kaedah WriteHeader() dalam struct StatusRespWr baharu yang membungkus http.ResponseWriter . Ini membolehkan kami menangkap kod status HTTP.

Pengendali yang dibungkus akan memanggil pengendali asal dan mencatat kod ralat HTTP 404 atau lebih tinggi selepas menerima respons. Kod contoh di bawah menunjukkan pelaksanaan lengkap:

<code class="go">type StatusRespWr struct {
    http.ResponseWriter
    status int
}

func (w *StatusRespWr) WriteHeader(status int) {
    w.status = status
    w.ResponseWriter.WriteHeader(status)
}

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 {
            log.Printf("Error status code: %d when serving path: %s", srw.status, r.RequestURI)
        }
    }
}

func main() {
    http.HandleFunc("/o/", wrapHandler(
        http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
    panic(http.ListenAndServe(":8181", nil))
}</code>

Apabila fail yang tidak wujud diminta, pengendali yang dibalut akan mencatat ralat berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Log Ralat 404 Apabila Menggunakan Pelayan Fail HTTP?. 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