"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso registrar erros 404 ao usar `http.FileServer` para servir arquivos estáticos no Go?

Como posso registrar erros 404 ao usar `http.FileServer` para servir arquivos estáticos no Go?

Publicado em 19/11/2024
Navegar:540

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

Registrando erros 404 para Http.FileServer

Ao servir arquivos estáticos usando http.FileServer, geralmente é importante registrar quando uma solicitação é feita para um arquivo que não existir. Embora o próprio http.FileServer não forneça esse registro, estender sua funcionalidade permite atingir esse objetivo.

Para agrupar o manipulador retornado por http.StripPrefix e http.FileServer, crie um novo http.Handler ou http. HandlerFunc. O wrapper chamará o manipulador empacotado e inspecionará o código de status da resposta HTTP resultante. Se indicar um erro (especificamente HTTP 404 Not Found), ele poderá registrar o evento.

Como http.ResponseWriter não suporta a leitura do código de status de resposta, crie um wrapper para ele (StatusRespWr). Este wrapper armazenará o código de status quando ele for escrito.

O código para o wrapper http.Handler é semelhante a este:

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

A função principal pode criar o servidor de arquivos, envolvê-lo e registrá-lo:

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

Ao solicitar um arquivo inexistente, a seguinte saída será gerada no console:

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

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3