Skip to content

Commit 5c77cee

Browse files
authored
feat: Add zerolog.Logger to retryablehttp.LeveledLogger adapter struct (#1821)
#### Summary This allows plugins that use https://github.com/hashicorp/go-retryablehttp to easily log retries as plugins use `github.com/rs/zerolog` ---
1 parent 987208f commit 5c77cee

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require (
1212
github.com/google/go-cmp v0.6.0
1313
github.com/google/uuid v1.6.0
1414
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0
15+
github.com/hashicorp/go-retryablehttp v0.7.7
1516
github.com/invopop/jsonschema v0.12.0
1617
github.com/rs/zerolog v1.33.0
1718
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
@@ -50,7 +51,6 @@ require (
5051
github.com/google/flatbuffers v24.3.25+incompatible // indirect
5152
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
5253
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
53-
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
5454
github.com/huandu/xstrings v1.4.0 // indirect
5555
github.com/inconshreveable/mousetrap v1.1.0 // indirect
5656
github.com/klauspost/compress v1.17.9 // indirect

helpers/retryablehttp/logger.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package retryablehttp
2+
3+
import (
4+
"github.com/hashicorp/go-retryablehttp"
5+
"github.com/rs/zerolog"
6+
)
7+
8+
type leveledLogger struct {
9+
zerolog.Logger
10+
}
11+
12+
func (l *leveledLogger) Debug(msg string, keysAndValues ...any) {
13+
l.Logger.Debug().Fields(keysAndValues).Msg(msg)
14+
}
15+
16+
func (l *leveledLogger) Error(msg string, keysAndValues ...any) {
17+
l.Logger.Error().Fields(keysAndValues).Msg(msg)
18+
}
19+
20+
func (l *leveledLogger) Info(msg string, keysAndValues ...any) {
21+
l.Logger.Info().Fields(keysAndValues).Msg(msg)
22+
}
23+
24+
func (l *leveledLogger) Warn(msg string, keysAndValues ...any) {
25+
l.Logger.Warn().Fields(keysAndValues).Msg(msg)
26+
}
27+
28+
func NewLeveledLogger(logger zerolog.Logger) retryablehttp.LeveledLogger {
29+
return &leveledLogger{logger}
30+
}

0 commit comments

Comments
 (0)