From 8c081b40bc13122a2429479dc653cb892d8e9149 Mon Sep 17 00:00:00 2001 From: Jules Casteran Date: Wed, 17 Apr 2024 14:40:47 +0200 Subject: [PATCH] feat: add unique identifier to logged requests --- scw/transport.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scw/transport.go b/scw/transport.go index 791a37393..172dd7b90 100644 --- a/scw/transport.go +++ b/scw/transport.go @@ -1,6 +1,7 @@ package scw import ( + "math/rand" "net/http" "net/http/httputil" "sync/atomic" @@ -24,16 +25,19 @@ func (l *requestLoggerTransport) RoundTrip(request *http.Request) (*http.Respons // Get anonymized headers request.Header = auth.AnonymizeHeaders(request.Header.Clone()) + // Add a pseudo random request identifier, this can be used to identify request and response in large logs + requestIdentifier := rand.Uint32() + dump, err := httputil.DumpRequestOut(request, true) if err != nil { logger.Warningf("cannot dump outgoing request: %s", err) } else { var logString string - logString += "\n--------------- Scaleway SDK REQUEST %d : ---------------\n" + logString += "\n---------- Scaleway SDK REQUEST %d (%x) : ----------\n" logString += "%s\n" logString += "---------------------------------------------------------" - logger.Debugf(logString, currentRequestNumber, dump) + logger.Debugf(logString, currentRequestNumber, requestIdentifier, dump) } // Restore original headers before sending the request @@ -51,11 +55,11 @@ func (l *requestLoggerTransport) RoundTrip(request *http.Request) (*http.Respons logger.Warningf("cannot dump ingoing response: %s", err) } else { var logString string - logString += "\n--------------- Scaleway SDK RESPONSE %d : ---------------\n" + logString += "\n---------- Scaleway SDK RESPONSE %d (%x) : ----------\n" logString += "%s\n" logString += "----------------------------------------------------------" - logger.Debugf(logString, currentRequestNumber, dump) + logger.Debugf(logString, currentRequestNumber, requestIdentifier, dump) } return response, requestError