Skip to content

Commit ddbc789

Browse files
committed
✨ Add sqlAdapter which implements sqldblogger.Logger interface
From simukti/sqldb-logger#76
1 parent 7c12e30 commit ddbc789

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

slog_adapter.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package sqldbloggerslog
2+
3+
// The original is https://github.com/simukti/sqldb-logger/pull/76
4+
5+
import (
6+
"context"
7+
"log/slog"
8+
9+
sqldblogger "github.com/simukti/sqldb-logger"
10+
)
11+
12+
type slogAdapter struct {
13+
logger *slog.Logger
14+
}
15+
16+
// New creates a log adapter from sqldblogger.Logger to an slog.Logger one.
17+
func New(logger *slog.Logger) sqldblogger.Logger {
18+
return &slogAdapter{logger: logger}
19+
}
20+
21+
// Log implement sqldblogger.Logger and converts its levels to corresponding
22+
// log/slog ones.
23+
func (a *slogAdapter) Log(ctx context.Context, sqldbLevel sqldblogger.Level, msg string, data map[string]interface{}) {
24+
attrs := make([]slog.Attr, 0, len(data))
25+
for k, v := range data {
26+
attrs = append(attrs, slog.Any(k, v))
27+
}
28+
29+
var level slog.Level
30+
switch sqldbLevel {
31+
case sqldblogger.LevelError:
32+
level = slog.LevelError
33+
case sqldblogger.LevelInfo:
34+
level = slog.LevelInfo
35+
case sqldblogger.LevelDebug:
36+
level = slog.LevelDebug
37+
default:
38+
// trace will use slog debug
39+
level = slog.LevelDebug
40+
}
41+
42+
a.logger.LogAttrs(ctx, level, msg, attrs...)
43+
}

0 commit comments

Comments
 (0)