Skip to content

Commit e2efcaa

Browse files
committed
fix(zerologadapter): pass ctx to logger
- Pass the context to the logger to be used by hooks. - Update test case with a hook to read value from the context. - Bump zerolog to v.1.30.0 to use `zerolog.Event.Ctx`.
1 parent 646c1a0 commit e2efcaa

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

logadapter/zerologadapter/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/simukti/sqldb-logger/logadapter/zerologadapter
33
go 1.17
44

55
require (
6-
github.com/rs/zerolog v1.28.0
6+
github.com/rs/zerolog v1.30.0
77
github.com/simukti/sqldb-logger v0.0.0-20230108154142-840120f68bea
88
github.com/stretchr/testify v1.8.1
99
)

logadapter/zerologadapter/go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
1+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
22
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
33
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
44
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -20,9 +20,9 @@ github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
2020
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2121
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2222
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
23-
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
24-
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
25-
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
23+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
24+
github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c=
25+
github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w=
2626
github.com/simukti/sqldb-logger v0.0.0-20230108154142-840120f68bea h1:MygiYxbZHQAGOsZmrIiytjLhPLwww1xcdXzPORrOrLM=
2727
github.com/simukti/sqldb-logger v0.0.0-20230108154142-840120f68bea/go.mod h1:ztTX0ctjRZ1wn9OXrzhonvNmv43yjFUXJYJR95JQAJE=
2828
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=

logadapter/zerologadapter/logger.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func New(logger zerolog.Logger) sqldblogger.Logger {
1919

2020
// Log implement sqldblogger.Logger and log it as is.
2121
// To use context.Context values, please copy this file and adjust to your needs.
22-
func (zl *zerologAdapter) Log(_ context.Context, level sqldblogger.Level, msg string, data map[string]interface{}) {
22+
func (zl *zerologAdapter) Log(ctx context.Context, level sqldblogger.Level, msg string, data map[string]interface{}) {
2323
var lvl zerolog.Level
2424

2525
switch level {
@@ -35,5 +35,5 @@ func (zl *zerologAdapter) Log(_ context.Context, level sqldblogger.Level, msg st
3535
lvl = zerolog.DebugLevel
3636
}
3737

38-
zl.logger.WithLevel(lvl).Fields(data).Msg(msg)
38+
zl.logger.WithLevel(lvl).Ctx(ctx).Fields(data).Msg(msg)
3939
}

logadapter/zerologadapter/logger_test.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,33 @@ import (
1414
sqldblogger "github.com/simukti/sqldb-logger"
1515
)
1616

17+
var _ zerolog.Hook = (*Hook)(nil)
18+
1719
type logContent struct {
1820
Level string `json:"level"`
1921
Time int64 `json:"time"`
2022
Duration float64 `json:"duration"`
2123
Query string `json:"query"`
2224
Args []interface{} `json:"args"`
2325
Error string `json:"error"`
26+
CtxValue string `json:"ctxValue"`
27+
}
28+
29+
type ctxKey struct{}
30+
31+
type Hook struct{}
32+
33+
func (h Hook) Run(e *zerolog.Event, _ zerolog.Level, _ string) {
34+
ctx := e.GetCtx()
35+
if value, ok := ctx.Value(ctxKey{}).(string); ok {
36+
e.Str("ctxValue", value)
37+
}
2438
}
2539

2640
func TestZerologAdapter_Log(t *testing.T) {
2741
now := time.Now()
2842
wr := &bytes.Buffer{}
29-
lg := New(zerolog.New(wr))
43+
lg := New(zerolog.New(wr).Hook(Hook{}))
3044
lvls := map[sqldblogger.Level]string{
3145
sqldblogger.LevelError: "error",
3246
sqldblogger.LevelInfo: "info",
@@ -47,7 +61,7 @@ func TestZerologAdapter_Log(t *testing.T) {
4761
data["error"] = fmt.Errorf("dummy error").Error()
4862
}
4963

50-
lg.Log(context.TODO(), lvl, "query", data)
64+
lg.Log(context.WithValue(context.TODO(), ctxKey{}, "context value"), lvl, "query", data)
5165

5266
var content logContent
5367

@@ -57,6 +71,7 @@ func TestZerologAdapter_Log(t *testing.T) {
5771
assert.True(t, content.Duration > 0)
5872
assert.Equal(t, lvlStr, content.Level)
5973
assert.Equal(t, "SELECT at.* FROM a_table AS at WHERE a.id = ? LIMIT 1", content.Query)
74+
assert.Equal(t, "context value", content.CtxValue)
6075
if lvl == sqldblogger.LevelError {
6176
assert.Equal(t, "dummy error", content.Error)
6277
}

0 commit comments

Comments
 (0)