logger.go raw
1 package session
2
3 import (
4 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v11/pkg/log"
5 "github.com/hashicorp/go-retryablehttp"
6 )
7
8 // GetRetryableLogger returns wrapper retryablehttp.LeveledLogger for log.Interface
9 func GetRetryableLogger(log log.Interface) retryablehttp.LeveledLogger {
10 return &retryableLogger{log: log}
11 }
12
13 // retryableLogger is wrapper for log.Interface to expose retryablehttp.LeveledLogger needed for retry logic
14 type retryableLogger struct {
15 log log.Interface
16 }
17
18 // Error level formatted message.
19 func (l *retryableLogger) Error(msg string, keysAndValues ...interface{}) {
20 kv := append([]interface{}{}, keysAndValues...)
21 switch msg {
22 case "request failed":
23 l.log.Errorf("%s %s request failed: %v", kv[1], kv[3], kv[5])
24 case "error reading response body":
25 l.log.Errorf("error reading response body: %v", kv[1])
26 default:
27 l.log.Errorf(msg, keysAndValues...)
28 }
29 }
30
31 // Info level formatted message.
32 func (l *retryableLogger) Info(msg string, keysAndValues ...interface{}) {
33 l.log.Infof(msg, keysAndValues...)
34 }
35
36 // Debug level formatted message.
37 func (l *retryableLogger) Debug(msg string, keysAndValues ...interface{}) {
38 kv := append([]interface{}{}, keysAndValues...)
39 switch msg {
40 case "retrying request":
41 l.log.Debugf("%s: retrying in %s (%d left)", kv[1], kv[3], kv[5])
42 case "performing request":
43 l.log.Debugf("%s %s", kv[1], kv[3])
44 default:
45 l.log.Debugf(msg, keysAndValues...)
46 }
47 }
48
49 // Warn level formatted message.
50 func (l *retryableLogger) Warn(msg string, keysAndValues ...interface{}) {
51 l.log.Warnf(msg, keysAndValues...)
52 }
53