...
1
2
3 package log15adapter
4
5 import (
6 "context"
7
8 "github.com/jackc/pgx/v4"
9 )
10
11
12
13 type Log15Logger interface {
14 Debug(msg string, ctx ...interface{})
15 Info(msg string, ctx ...interface{})
16 Warn(msg string, ctx ...interface{})
17 Error(msg string, ctx ...interface{})
18 Crit(msg string, ctx ...interface{})
19 }
20
21 type Logger struct {
22 l Log15Logger
23 }
24
25 func NewLogger(l Log15Logger) *Logger {
26 return &Logger{l: l}
27 }
28
29 func (l *Logger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) {
30 logArgs := make([]interface{}, 0, len(data))
31 for k, v := range data {
32 logArgs = append(logArgs, k, v)
33 }
34
35 switch level {
36 case pgx.LogLevelTrace:
37 l.l.Debug(msg, append(logArgs, "PGX_LOG_LEVEL", level)...)
38 case pgx.LogLevelDebug:
39 l.l.Debug(msg, logArgs...)
40 case pgx.LogLevelInfo:
41 l.l.Info(msg, logArgs...)
42 case pgx.LogLevelWarn:
43 l.l.Warn(msg, logArgs...)
44 case pgx.LogLevelError:
45 l.l.Error(msg, logArgs...)
46 default:
47 l.l.Error(msg, append(logArgs, "INVALID_PGX_LOG_LEVEL", level)...)
48 }
49 }
50
View as plain text