How do you handle HTTP client server logging in Go?
In Go, there are several ways to handle logging in an HTTP client or server. One common way is to use the log package from the standard library. Here's an example of how to use the log package to log HTTP requests and responses in a client:
Client Server Logging
Example
package main
import (
"log"
"net/http"
"net/http/httputil"
"time"
)
func main() {
client := &http.Client{
Timeout: 10 * time.Second,
}
req, err := http.NewRequest("GET", "https://example.com", nil)
if err != nil {
log.Fatal(err)
}
// Use httputil.DumpRequestOut to log the outgoing request
reqBytes, err := httputil.DumpRequestOut(req, true)
if err != nil {
log.Fatal(err)
}
log.Printf("Request: %s", reqBytes)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
// Use httputil.DumpResponse to log the incoming response
respBytes, err := httputil.DumpResponse(resp, true)
if err != nil {
log.Fatal(err)
}
log.Printf("Response: %s", respBytes)
defer resp.Body.Close()
}
This code sets up an HTTP client with a timeout of 10 seconds, creates a GET request to https://example.com, logs the outgoing request using httputil.DumpRequestOut, sends the request using the client, logs the incoming response using httputil.DumpResponse, and finally closes the response body.
You can customize the logging output to suit your needs, for example by using different log levels or formats, or by logging additional information such as timestamps or request/response headers.
Most Helpful This Week
Golang import package inside packageFunctions mess (recursive anonymous function) in GolangHow to replace emoji characters in string using regex in Golang?How to add and update elements in Map?Sample program to create csv and write dataPrint index and element or data from Array, Slice and MapHow to check if a string contains a numbers in Golang?How to get Dimensions of an image type jpg jpeg png or gif ?How to add Watermark or Merge two image?How to declare empty Map in Go?