前のスレッドで提起された質問に応えて、この記事では、ライブ サーバーからの HTTP 応答を再利用せずにログに記録することを提案します。偽のリクエストに。目標は、徹底的な分析のためにヘッダーと JSON ペイロードの両方をキャプチャすることです。
ミドルウェア チェーンの概念を利用して、応答をインターセプトし、関連情報をログに記録するカスタム HTTP ハンドラーを作成できます。その方法は次のとおりです。
ミドルウェア チェーンでは、メイン ハンドラー関数の前後で実行できるミドルウェア関数を定義します。これらのミドルウェアは、ロギング、検証、セキュリティ チェックなどのさまざまなタスクを実行できます。
魔法の negroni ソリューションの代わりに、独自の関数ハンドラー コンビネータを定義できます。各コンビネータは特定のタスクを処理し、組み合わせて実行チェーンを形成できます。たとえば、応答ログ用のコンビネータを作成できます。
<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // Replace response writer with a recorder for subsequent handlers c := httptest.NewRecorder() next(c, r) // Copy response from recorder to actual response writer for k, v := range c.HeaderMap { w.Header()[k] = v } w.WriteHeader(c.Code) c.Body.WriteTo(w) } }</code>
ログ ミドルウェアを特定のカテゴリのすべてのハンドラに適用するには、デフォルト ハンドラを作成できます。
<code class="go">func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc { return NewResponseLoggingHandler(NewOtherStuffHandler(next)) }</code>
このコンビネータにより、NewDefaultHandler で作成されたすべてのチェーンに、NewOtherStuffHandler で定義された他のデフォルト機能とともに応答ログが確実に含まれるようになります。
これらの手法を活用することで、HTTP 応答をシームレスにログに記録できます。ライブ Web サービスを利用して、デバッグと分析のための貴重な洞察を提供します。
以上がミドルウェアチェーンを使用して Go で HTTP 応答をログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。