Web 開発では、HTTP リクエストを追跡およびデバッグするために応答情報をログに記録することが不可欠です。 httputil.DumpResponse 関数は応答をダンプする機能を提供しますが、http.Response タイプで動作するため、受信リクエストのログ記録への使用が制限されます。
受信リクエストの応答情報をログに記録する一般的なアプローチは、ミドルウェア チェーンを使用することです。ミドルウェア関数はリクエスト ハンドラーの前後で実行されます。これらの関数はリクエスト オブジェクトとレスポンス オブジェクトを変更して、ロギングのための便利なメカニズムを提供できます。
ミドルウェア ロガーを実装するには、ハンドラー コンビネータを定義します。 :
<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { c := httptest.NewRecorder() next(c, r) for k, v := range c.HeaderMap { w.Header()[k] = v } w.WriteHeader(c.Code) c.Body.WriteTo(w) } }</code>
このミドルウェアは、httptest.Recorder に応答を記録し、それを実際の http.ResponseWriter にコピーします。
すべてのハンドラー チェーンにログ ミドルウェアを含めるには、デフォルトのハンドラー コンビネーターを定義します。
<code class="go">func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc { return NewResponseLoggingHandler(NewOtherStuffHandler(next)) }</code>
このデフォルト ハンドラーを使用すると、後続のすべてのチェーンに応答ログ ミドルウェアが含まれます。
これこのアプローチは、受信 HTTP リクエストの応答情報をログに記録する柔軟で再利用可能な方法を提供します。これにより、既存のハンドラー チェーンと簡単に統合でき、特定のロギング ニーズを満たすように構成できます。
以上がミドルウェアを使用して受信 HTTP リクエストの応答情報をログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。