http/client/direct/restlogger/restlogger.go (31 lines of code) (raw):
package restlogger
import (
log "log/slog"
"net/http"
"time"
"github.com/Azure/aks-middleware/http/common/logging"
)
type LoggingRoundTripper struct {
Proxied http.RoundTripper
Logger *log.Logger
}
func (lrt *LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
start := time.Now()
resp, err := lrt.Proxied.RoundTrip(req)
logging.LogRequest(logging.LogRequestParams{
Logger: lrt.Logger,
StartTime: start,
Request: req,
Response: resp,
Error: err,
})
return resp, err
}
func NewLoggingClient(logger *log.Logger) *http.Client {
return &http.Client{
Transport: &LoggingRoundTripper{
Proxied: http.DefaultTransport,
Logger: logger,
},
}
}