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
Write string slice line by line to a text file
Golang program to demonstrates how to encode map data into a JSON string.
Creating Instances of Struct Types
How to declare Interface Type in Go Programming Language
Program in Go language to print Pascal's Triangle
How to convert Boolean Type to String in Go?
Most Helpful This Week
How to set timeout for http.Get() requests in Golang?Different ways to convert Byte Array into StringRegular expression to validate the date format in "dd/mm/yyyy"Replace numbers by zero from stringHow to get the current date and time with timestamp in local and other timezones ?Example of Switch Case with Break in For LoopHow to create thumbnail of an image?How to convert Go struct to JSON?Regular expression to extract all Non-Alphanumeric Characters from a StringHow to collect information about garbage collection?