«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу регистрировать ошибки 404 при использовании http.FileServer для обслуживания статических файлов в Go?

Как я могу регистрировать ошибки 404 при использовании http.FileServer для обслуживания статических файлов в Go?

Опубликовано 19 ноября 2024 г.
Просматривать:920

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

Регистрация ошибок 404 для Http.FileServer

При обслуживании статических файлов с помощью http.FileServer часто важно регистрировать, когда делается запрос на файл, который не существовать. Хотя сам http.FileServer не обеспечивает такое ведение журнала, расширение его функциональности позволяет достичь этой цели.

Чтобы обернуть обработчик, возвращаемый http.StripPrefix и http.FileServer, создайте новый http.Handler или http. ОбработчикФунк. Оболочка вызовет завернутый обработчик и проверит полученный код состояния ответа HTTP. Если он указывает на ошибку (в частности, HTTP 404 Not Found), он может зарегистрировать событие.

Поскольку http.ResponseWriter не поддерживает чтение кода состояния ответа, создайте для него оболочку (StatusRespWr). Эта оболочка будет хранить код состояния при его записи.

Код оболочки http.Handler выглядит следующим образом:

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

Функция main может создать файловый сервер, обернуть его и зарегистрировать:

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

При запросе несуществующего файла в консоли будет сгенерирован следующий вывод:

2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3