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
How do you create an HTTP server in Go?
How to remove multiple spaces in a string in GoLang?
How to Convert string to float type in Go?
How do you set cookies in an HTTP request with an HTTP client in Go?
Concurrently printing array elements using goroutines and channels
GO Hello World program
Golang program for implementation of Radix Sort
3 Different Examples - How State Works in React?
Golang write struct to XML file
GO Program to take user input and addition of two strings
Most Helpful This Week
How to use array in Go Programming Language?Regular expression to validate the date format in "dd/mm/yyyy"How to kill execution of goroutine?Convert Int data type to Int16 Int32 Int64Convert Float32 to Float64 and Float64 to Float32Sierpinski triangle in Go Programming LanguageExample: Fields and FieldsFunc from BYTES PackageExample: Arrays of Arrays, Arrays of Slices, Slices of Arrays and Slices of SlicesPassing multiple string arguments to a variadic functionRegular expression to extract domain from URL