context_test.go
1package log
2
3import (
4 "bytes"
5 "context"
6 "log/slog"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10)
11
12func TestContext(t *testing.T) {
13 var buf bytes.Buffer
14
15 ctx := context.Background()
16 logger := New(slog.NewJSONHandler(&buf, nil))
17 ctx = ToContext(ctx, logger)
18
19 logger2 := FromContext(ctx)
20 _, ok := logger2.Handler().(*cannon)
21 assert.True(t, ok, "logger should be a cannon logger")
22
23 logger2.Info("test")
24 result := getJSON(buf.Bytes(), t)
25 assert.Equal(t, "test", result["msg"])
26}
27
28func TestContextDefault(t *testing.T) {
29 var buf bytes.Buffer
30
31 // set a standard JSON handler as the default logger
32 logger := slog.New(slog.NewJSONHandler(&buf, nil))
33 slog.SetDefault(logger)
34
35 // get logger from empty context, should return the default logger if none exists
36 logger2 := FromContext(context.Background())
37 _, ok := logger2.Handler().(*cannon)
38 assert.False(t, ok, "logger should be a default logger")
39
40 logger2.Info("test")
41 result := getJSON(buf.Bytes(), t)
42 assert.Equal(t, "test", result["msg"])
43}