1 package zerologadapter_test
2
3 import (
4 "bytes"
5 "context"
6 "testing"
7
8 "github.com/jackc/pgx/v4"
9 "github.com/jackc/pgx/v4/log/zerologadapter"
10 "github.com/rs/zerolog"
11 )
12
13 func TestLogger(t *testing.T) {
14
15 t.Run("default", func(t *testing.T) {
16 var buf bytes.Buffer
17 zlogger := zerolog.New(&buf)
18 logger := zerologadapter.NewLogger(zlogger)
19 logger.Log(context.Background(), pgx.LogLevelInfo, "hello", map[string]interface{}{"one": "two"})
20 const want = `{"level":"info","module":"pgx","one":"two","message":"hello"}
21 `
22 got := buf.String()
23 if got != want {
24 t.Errorf("%s != %s", got, want)
25 }
26 })
27
28 t.Run("disable pgx module", func(t *testing.T) {
29 var buf bytes.Buffer
30 zlogger := zerolog.New(&buf)
31 logger := zerologadapter.NewLogger(zlogger, zerologadapter.WithoutPGXModule())
32 logger.Log(context.Background(), pgx.LogLevelInfo, "hello", nil)
33 const want = `{"level":"info","message":"hello"}
34 `
35 got := buf.String()
36 if got != want {
37 t.Errorf("%s != %s", got, want)
38 }
39 })
40
41 t.Run("from context", func(t *testing.T) {
42 var buf bytes.Buffer
43 zlogger := zerolog.New(&buf)
44 ctx := zlogger.WithContext(context.Background())
45 logger := zerologadapter.NewContextLogger()
46 logger.Log(ctx, pgx.LogLevelInfo, "hello", map[string]interface{}{"one": "two"})
47 const want = `{"level":"info","module":"pgx","one":"two","message":"hello"}
48 `
49
50 got := buf.String()
51 if got != want {
52 t.Log(got)
53 t.Log(want)
54 t.Errorf("%s != %s", got, want)
55 }
56 })
57
58 var buf bytes.Buffer
59 type key string
60 var ck key
61 zlogger := zerolog.New(&buf)
62 logger := zerologadapter.NewLogger(zlogger,
63 zerologadapter.WithContextFunc(func(ctx context.Context, logWith zerolog.Context) zerolog.Context {
64
65
66
67 id, ok := ctx.Value(ck).(string)
68 if ok {
69 logWith = logWith.Str("req_id", id)
70 }
71 return logWith
72 }),
73 )
74
75 t.Run("no request id", func(t *testing.T) {
76 buf.Reset()
77 ctx := context.Background()
78 logger.Log(ctx, pgx.LogLevelInfo, "hello", nil)
79 const want = `{"level":"info","module":"pgx","message":"hello"}
80 `
81 got := buf.String()
82 if got != want {
83 t.Errorf("%s != %s", got, want)
84 }
85 })
86
87 t.Run("with request id", func(t *testing.T) {
88 buf.Reset()
89 ctx := context.WithValue(context.Background(), ck, "1")
90 logger.Log(ctx, pgx.LogLevelInfo, "hello", map[string]interface{}{"two": "2"})
91 const want = `{"level":"info","module":"pgx","req_id":"1","two":"2","message":"hello"}
92 `
93 got := buf.String()
94 if got != want {
95 t.Errorf("%s != %s", got, want)
96 }
97 })
98 }
99
View as plain text