>  기사  >  백엔드 개발  >  Go에서 정적 파일을 제공하기 위해 `http.FileServer`를 사용할 때 404 오류를 어떻게 기록할 수 있나요?

Go에서 정적 파일을 제공하기 위해 `http.FileServer`를 사용할 때 404 오류를 어떻게 기록할 수 있나요?

DDD
DDD원래의
2024-10-31 01:42:291010검색

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

Http.FileServer에 대한 404 오류 로깅

http.FileServer를 사용하여 정적 파일을 제공할 때 그렇지 않은 파일에 대한 요청이 있을 때 이를 기록하는 것이 중요한 경우가 많습니다. 존재하다. http.FileServer 자체는 이러한 로깅을 제공하지 않지만 기능을 확장하면 이 목표를 달성할 수 있습니다.

http.StripPrefix 및 http.FileServer에서 반환된 핸들러를 래핑하려면 새 http.Handler 또는 http를 만듭니다. HandlerFunc. 래퍼는 래핑된 핸들러를 호출하고 결과 HTTP 응답 상태 코드를 검사합니다. 오류(특히 HTTP 404 찾을 수 없음)를 나타내는 경우 이벤트를 기록할 수 있습니다.

http.ResponseWriter는 응답 상태 코드 읽기를 지원하지 않으므로 이에 대한 래퍼(StatusRespWr)를 생성하세요. 이 래퍼는 작성 시 상태 코드를 저장합니다.

http.Handler 래퍼의 코드는 다음과 같습니다.

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

주 함수는 파일 서버를 생성하고 이를 래핑할 수 있습니다. , 그리고 등록하세요:

<code class="go">http.HandleFunc("/o/", wrapHandler(
    http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
panic(http.ListenAndServe(":8181", nil))</code>

존재하지 않는 파일을 요청하면 콘솔에 다음 출력이 생성됩니다:

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

위 내용은 Go에서 정적 파일을 제공하기 위해 `http.FileServer`를 사용할 때 404 오류를 어떻게 기록할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.