HTTP ファイル サーバーで欠落ファイルの 404 ステータスをログに記録する
http.FileServer を使用してファイルを提供する場合、存在しないファイルに対するリクエストが返されることがありますサーバー コンソールにログオンしていないと、ステータス コード 404 が表示されます。このため、欠落ファイルの追跡とトラブルシューティングが困難になる可能性があります。
解決策
HTTP 404 エラーをログに記録するには、http.StripPrefix() によって返されるハンドラーの機能を強化します。および http.FileServer():
ラップされたハンドラーは元のハンドラーを呼び出し、応答の受信後に HTTP 404 以上のエラー コードをログに記録します。以下のコード例は完全な実装を示しています:
<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>
存在しないファイルが要求されると、ラップされたハンドラーは次のエラーをログに記録します:
2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
以上がHTTP ファイル サーバーの使用時に 404 エラーをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。