Go 言語における http.Transport のリクエスト エラー処理とログ記録方法
Go 言語では、http.Transport は HTTP リクエストを送信するための基盤となるトランスポート メカニズムです。実際のアプリケーションでは、接続失敗やタイムアウトなどのリクエスト エラーが頻繁に発生します。システムの安定性と信頼性を確保するには、これらのエラーを適切に処理し、記録する必要があります。
まず、http.RoundTripper インターフェイスのインスタンスを作成し、それを http.Client の Transport プロパティとして使用する必要があります。カスタム RoundTripper 実装を通じてリクエスト エラーを処理できます。以下は簡単な例です:
package main import ( "log" "net/http" "os" "time" ) type CustomTransport struct { Transport http.Transport } func (c *CustomTransport) RoundTrip(req *http.Request) (*http.Response, error) { resp, err := c.Transport.RoundTrip(req) if err != nil { // 错误处理逻辑 log.Printf("请求错误: %v", err) } return resp, err } func main() { client := &http.Client{ Transport: &CustomTransport{ Transport: http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, }, }, } resp, err := client.Get("http://example.com") if err != nil { log.Fatalf("请求错误: %v", err) } defer resp.Body.Close() // 处理响应 }
上記のコードでは、RoundTripper インターフェイスの RoundTrip メソッドを実装する CustomTransport タイプを定義します。 RoundTrip メソッドでは、最初に http.Transport の RoundTrip メソッドを呼び出してリクエストを送信し、考えられるエラーをキャプチャします。エラーが発生した場合には、ログに出力したり、アラームを送信したりするなど、状況に応じた対応が可能です。
http.Client を作成するときに、CustomTransport インスタンスを Transport プロパティに割り当てたことに注意してください。このようにして、クライアントを通じて送信されるすべてのリクエストはカスタム トランスポートを使用します。これは、リクエスト エラーを捕捉できるかどうかの鍵でもあります。
リクエストエラーの処理に加えて、エラー情報も記録する必要があります。上記の例では、ログ パッケージを使用してエラー メッセージを出力しました。エラー情報をファイルに書き込む、リモート ログ サービスに送信する、サードパーティのログ ライブラリを使用して記録するなど、実際のニーズに基づいて適切なログ記録方法を選択できます。
要約すると、Go 言語での http.Transport のリクエスト エラー処理およびログ記録メソッドには次の手順が含まれます:
以上がGo 言語での http.Transport のリクエスト エラー処理とログ メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。