Protokoll 404-Status bei fehlenden Dateien mit HTTP-Dateiserver
Bei der Bereitstellung von Dateien über http.FileServer können Anfragen für nicht vorhandene Dateien zurückgegeben werden einen 404-Statuscode, ohne an der Serverkonsole angemeldet zu sein. Dies kann es schwierig machen, fehlende Dateien zu verfolgen und Fehler zu beheben.
Lösung
Um HTTP 404-Fehler zu protokollieren, verbessern Sie die Funktionalität der von http.StripPrefix() zurückgegebenen Handler. und http.FileServer():
Der umschlossene Handler ruft den ursprünglichen Handler auf und protokolliert HTTP 404- oder höhere Fehlercodes nach Erhalt der Antwort. Der folgende Beispielcode zeigt eine vollständige Implementierung:
<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>
Wenn eine nicht vorhandene Datei angefordert wird, protokolliert der umschlossene Handler den folgenden Fehler:
2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
Das obige ist der detaillierte Inhalt vonWie protokolliere ich 404-Fehler bei Verwendung eines HTTP-Dateiservers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!