diff --git a/internal/trace/context.go b/internal/trace/context.go index 322696062..0d681d343 100644 --- a/internal/trace/context.go +++ b/internal/trace/context.go @@ -42,6 +42,7 @@ func WithLoggerLevel(ctx context.Context, level logrus.Level) context.Context { var formatter logrus.TextFormatter if level == logrus.DebugLevel { formatter.FullTimestamp = true + formatter.TimestampFormat = "2006-01-02 15:04:05.000000000Z" } else { formatter.DisableTimestamp = true } @@ -52,6 +53,23 @@ func WithLoggerLevel(ctx context.Context, level logrus.Level) context.Context { logger.SetFormatter(&formatter) logger.SetLevel(level) - // save logger to context + // Add UTC hook to convert timestamps to UTC + logger.AddHook(&UTCHook{}) + return log.WithLogger(ctx, logger) } + +// UTCHook is a hook for logrus that converts timestamps to UTC +type UTCHook struct{} + +// Levels returns the levels this hook is enabled for +func (h *UTCHook) Levels() []logrus.Level { + return logrus.AllLevels +} + +// Fire is called by logrus when a log entry is created. +// This implementation converts the timestamp to UTC. +func (h *UTCHook) Fire(entry *logrus.Entry) error { + entry.Time = entry.Time.UTC() + return nil +} diff --git a/internal/trace/transport.go b/internal/trace/transport.go index 5c631c62b..76ca9c751 100644 --- a/internal/trace/transport.go +++ b/internal/trace/transport.go @@ -69,7 +69,7 @@ func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error e := log.GetLogger(ctx) // log the request - e.Debugf("Request #%d\n> Request: %q %q\n> Request headers:\n%s", + e.Debugf("Request #%d\n> Request: %q %q\n> Request headers:\n%s\n\n\n", id, req.Method, req.URL, logHeader(req.Header)) // log the response @@ -79,7 +79,7 @@ func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error } else if resp == nil { e.Errorf("No response obtained for request %s %q", req.Method, req.URL) } else { - e.Debugf("Response #%d\n< Response status: %q\n< Response headers:\n%s", + e.Debugf("Response #%d\n< Response status: %q\n< Response headers:\n%s\n\n\n", id, resp.Status, logHeader(resp.Header)) } return resp, err