...

Source file src/github.com/jackc/pgx/v4/log/zerologadapter/adapter_test.go

Documentation: github.com/jackc/pgx/v4/log/zerologadapter

     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  			// You can use zerolog.hlog.IDFromCtx(ctx) or even
    65  			// zerolog.log.Ctx(ctx) to fetch the whole logger instance from the
    66  			// context if you want.
    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