mirror of https://github.com/VinGarcia/ksql.git
Simplify logger feature
parent
d65216479a
commit
08247e5b82
|
@ -312,7 +312,7 @@ func TestInjectLogger(t *testing.T) {
|
||||||
var loggedQuery string
|
var loggedQuery string
|
||||||
var loggedParams []interface{}
|
var loggedParams []interface{}
|
||||||
var loggedErr error
|
var loggedErr error
|
||||||
ctx := InjectLogger(ctx, "info", func(ctx context.Context, values LogValues) {
|
ctx := InjectLogger(ctx, func(ctx context.Context, values LogValues) {
|
||||||
loggedQuery = values.Query
|
loggedQuery = values.Query
|
||||||
loggedParams = values.Params
|
loggedParams = values.Params
|
||||||
loggedErr = values.Err
|
loggedErr = values.Err
|
||||||
|
|
51
logger.go
51
logger.go
|
@ -2,7 +2,6 @@ package ksql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type loggerKey struct{}
|
type loggerKey struct{}
|
||||||
|
@ -13,27 +12,19 @@ type LogValues struct {
|
||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type loggerFn func(ctx context.Context, query string, params []interface{}, err error)
|
||||||
|
|
||||||
func InjectLogger(
|
func InjectLogger(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
level string,
|
|
||||||
logFn func(ctx context.Context, values LogValues),
|
logFn func(ctx context.Context, values LogValues),
|
||||||
) context.Context {
|
) context.Context {
|
||||||
level = strings.ToLower(level)
|
return context.WithValue(ctx, loggerKey{}, loggerFn(func(ctx context.Context, query string, params []interface{}, err error) {
|
||||||
if level != "info" {
|
logFn(ctx, LogValues{
|
||||||
// Default to the least verbose level:
|
Query: query,
|
||||||
level = "error"
|
Params: params,
|
||||||
}
|
Err: err,
|
||||||
|
})
|
||||||
return context.WithValue(ctx, loggerKey{}, logger{
|
}))
|
||||||
level: level,
|
|
||||||
logFn: func(ctx context.Context, query string, params []interface{}, err error) {
|
|
||||||
logFn(ctx, LogValues{
|
|
||||||
Query: query,
|
|
||||||
Params: params,
|
|
||||||
Err: err,
|
|
||||||
})
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ctxLog(ctx context.Context, query string, params []interface{}, err *error) {
|
func ctxLog(ctx context.Context, query string, params []interface{}, err *error) {
|
||||||
|
@ -42,27 +33,5 @@ func ctxLog(ctx context.Context, query string, params []interface{}, err *error)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if *err != nil {
|
l.(loggerFn)(ctx, query, params, *err)
|
||||||
l.(logger)._error(ctx, query, params, *err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
l.(logger)._info(ctx, query, params, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
type logger struct {
|
|
||||||
level string
|
|
||||||
logFn func(ctx context.Context, query string, params []interface{}, err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l logger) _info(ctx context.Context, query string, params []interface{}, err error) {
|
|
||||||
if l.level == "error" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
l.logFn(ctx, query, params, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l logger) _error(ctx context.Context, query string, params []interface{}, err error) {
|
|
||||||
l.logFn(ctx, query, params, err)
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue