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
Most Helpful This Week
Regular expression to extract numbers from a string in GolangSimple function with return value in GolangGolang String ConcatenationRegular expression to extract DNS host-name or IP Address from stringHow to read names of all files and folders in current directory?How to set timeout for http.Get() requests in Golang?What is Rune? How to get ASCII value of any character in Go?How to use a mutex to define critical sections of code and fix race conditions?Add N number of Year, Month, Day, Hour, Minute, Second, Millisecond, Microsecond and Nanosecond to current date-timeRegular expression to extract domain from URL