Go で静的ファイルを提供するために「http.FileServer」を使用するときに 404 エラーをログに記録するにはどうすればよいですか?

DDD
リリース: 2024-10-31 01:42:29
オリジナル
967 人が閲覧しました

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

Http.FileServer の 404 エラーのログ

http.FileServer を使用して静的ファイルを提供する場合、多くの場合、HTTP.FileServer を使用しないファイルに対してリクエストが行われたときにログを記録することが重要です。存在する。 http.FileServer 自体はそのようなログ記録を提供しませんが、その機能を拡張することでこの目標を達成できます。

http.StripPrefix および http.FileServer によって返されるハンドラーをラップするには、新しい http.Handler または http を作成します。ハンドラ関数。ラッパーはラップされたハンドラーを呼び出し、結果の HTTP 応答ステータス コードを検査します。エラー (具体的には HTTP 404 Not Found) を示している場合、イベントをログに記録できます。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!