Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add unique identifier to logged requests #2055

Merged
merged 1 commit into from
Jun 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions scw/transport.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package scw

import (
"math/rand"
"net/http"
"net/http/httputil"
"sync/atomic"
Expand All @@ -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
Expand All @@ -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
Expand Down
Loading