"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo registrar errores 404 cuando uso `http.FileServer` para entregar archivos estáticos en Go?

¿Cómo puedo registrar errores 404 cuando uso `http.FileServer` para entregar archivos estáticos en Go?

Publicado el 2024-11-19
Navegar:410

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

Registro de errores 404 para Http.FileServer

Al servir archivos estáticos usando http.FileServer, a menudo es importante registrar cuando se realiza una solicitud para un archivo que no existir. Si bien http.FileServer en sí no proporciona dicho registro, ampliar su funcionalidad le permite lograr este objetivo.

Para ajustar el controlador devuelto por http.StripPrefix y http.FileServer, cree un nuevo http.Handler o http. HandlerFunc. El contenedor llamará al controlador empaquetado e inspeccionará el código de estado de respuesta HTTP resultante. Si indica un error (específicamente HTTP 404 no encontrado), puede registrar el evento.

Dado que http.ResponseWriter no admite la lectura del código de estado de respuesta, cree un contenedor para él (StatusRespWr). Este contenedor almacenará el código de estado cuando se escriba.

El código para el contenedor http.Handler se ve así:

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)
        }
    }
}

La función principal puede crear el servidor de archivos, empaquetarlo y registrarlo:

http.HandleFunc("/o/", wrapHandler(
    http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
panic(http.ListenAndServe(":8181", nil))

Al solicitar un archivo no existente, se generará el siguiente resultado en la consola:

2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3