Migrating to unified logger interface

This commit is contained in:
Pavel Shevaev 2022-11-03 14:47:45 +03:00
parent 7756ae11cf
commit 399ad0a796
5 changed files with 31 additions and 19 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tags

3
go.mod
View File

@ -3,10 +3,11 @@ module git.bit5.ru/backend/rdb
go 1.13 go 1.13
require ( require (
git.bit5.ru/backend/colog v1.0.0
git.bit5.ru/backend/redigo v1.0.1 git.bit5.ru/backend/redigo v1.0.1
git.bit5.ru/backend/redsync v1.0.1 git.bit5.ru/backend/redsync v1.0.1
git.bit5.ru/backend/res_tracker v1.0.0 git.bit5.ru/backend/res_tracker v1.0.0
github.com/go-logr/logr v1.2.3
github.com/go-logr/stdr v1.2.2
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.7.0 github.com/stretchr/testify v1.7.0
) )

7
go.sum
View File

@ -1,5 +1,3 @@
git.bit5.ru/backend/colog v1.0.0 h1:FLykTQuRfnhWYQ+dZhoaOfkxjHNEfWp4AwP/KD+ob+M=
git.bit5.ru/backend/colog v1.0.0/go.mod h1:fiOrMQ7SPBD5Pn/Tb7rG1phsDQbZaA7S0vtdnlM6BK4=
git.bit5.ru/backend/redigo v1.0.1 h1:1LyyjHWfeed+0LEjMYqFnTuyr5ri2f+UDCV3vdAMh4Q= git.bit5.ru/backend/redigo v1.0.1 h1:1LyyjHWfeed+0LEjMYqFnTuyr5ri2f+UDCV3vdAMh4Q=
git.bit5.ru/backend/redigo v1.0.1/go.mod h1:nGfr55wovFNsbAleS5hMmtD/X3X5FZ52HJdbRses5WA= git.bit5.ru/backend/redigo v1.0.1/go.mod h1:nGfr55wovFNsbAleS5hMmtD/X3X5FZ52HJdbRses5WA=
git.bit5.ru/backend/redsync v1.0.1 h1:NcXwMw36riODqi6sMyvRCFVpIfRY63oNIGJ2szdaLoI= git.bit5.ru/backend/redsync v1.0.1 h1:NcXwMw36riODqi6sMyvRCFVpIfRY63oNIGJ2szdaLoI=
@ -8,6 +6,11 @@ git.bit5.ru/backend/res_tracker v1.0.0 h1:0FWwzP3yGOe9L39VuH9LIqyQABo/P+rd3kA112
git.bit5.ru/backend/res_tracker v1.0.0/go.mod h1:ffjnItxqkGc6rxOK9XgrQDirGhmIBwoqibmyLJ4TZtQ= git.bit5.ru/backend/res_tracker v1.0.0/go.mod h1:ffjnItxqkGc6rxOK9XgrQDirGhmIBwoqibmyLJ4TZtQ=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws=
github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=

19
rdb.go
View File

@ -6,11 +6,11 @@ import (
"strconv" "strconv"
"time" "time"
"git.bit5.ru/backend/colog"
"git.bit5.ru/backend/redigo/redis" "git.bit5.ru/backend/redigo/redis"
"git.bit5.ru/backend/redsync" "git.bit5.ru/backend/redsync"
"git.bit5.ru/backend/res_tracker" "git.bit5.ru/backend/res_tracker"
"github.com/go-logr/logr"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
@ -38,7 +38,7 @@ type Pool struct {
RP *redis.Pool RP *redis.Pool
} }
func OpenPool(s RdSettings, logger *colog.CoLog) *Pool { func OpenPool(s RdSettings, logger logr.Logger) *Pool {
p := &Pool{S: s, RP: newRedisPool(s, logger)} p := &Pool{S: s, RP: newRedisPool(s, logger)}
return p return p
} }
@ -70,7 +70,7 @@ func (p *Pool) Do(cmd string, args ...interface{}) (interface{}, error) {
type rdb struct { type rdb struct {
orig redis.Conn orig redis.Conn
name string name string
logger *colog.CoLog logger logr.Logger
s RdSettings s RdSettings
} }
@ -93,7 +93,7 @@ func (rd *rdb) Do(command string, args ...interface{}) (interface{}, error) {
for i := 0; i < len(args); i++ { for i := 0; i < len(args); i++ {
s += fmt.Sprintf("%v ", args[i]) s += fmt.Sprintf("%v ", args[i])
} }
rd.logger.Output(colog.LDebug, 5, fmt.Sprintf("%s %s", command, s)) rd.logger.WithCallDepth(2).V(1).Info(command + " " + s)
} }
} else if rd.s.LogLevel > 0 { } else if rd.s.LogLevel > 0 {
//for this level not logging too verbose commands //for this level not logging too verbose commands
@ -105,7 +105,7 @@ func (rd *rdb) Do(command string, args ...interface{}) (interface{}, error) {
if len(args) > 5 { if len(args) > 5 {
s += " ..." s += " ..."
} }
rd.logger.Output(colog.LDebug, 5, fmt.Sprintf("%s %s", command, s)) rd.logger.WithCallDepth(2).V(1).Info(command + " " + s)
} }
} }
return rd.orig.Do(command, args...) return rd.orig.Do(command, args...)
@ -118,7 +118,7 @@ func (rd *rdb) Send(command string, args ...interface{}) error {
for i := 0; i < len(args); i++ { for i := 0; i < len(args); i++ {
s += fmt.Sprintf("%v ", args[i]) s += fmt.Sprintf("%v ", args[i])
} }
rd.logger.Output(colog.LDebug, 5, fmt.Sprintf("%s %s", command, s)) rd.logger.WithCallDepth(2).V(1).Info(command + " " + s)
} }
} }
return rd.orig.Send(command, args...) return rd.orig.Send(command, args...)
@ -128,7 +128,7 @@ func (rd *rdb) Receive() (interface{}, error) {
return rd.orig.Receive() return rd.orig.Receive()
} }
func newRedisPool(s RdSettings, logger *colog.CoLog) *redis.Pool { func newRedisPool(s RdSettings, logger logr.Logger) *redis.Pool {
maxIdle := s.MaxIdle maxIdle := s.MaxIdle
if maxIdle == 0 { if maxIdle == 0 {
@ -149,10 +149,13 @@ func newRedisPool(s RdSettings, logger *colog.CoLog) *redis.Pool {
if err != nil { if err != nil {
return nil, errors.WithStack(err) return nil, errors.WithStack(err)
} }
if len(s.Prefix) > 0 {
logger = logger.WithValues("rd_prefix", s.Prefix)
}
c := &rdb{ c := &rdb{
orig: orig, orig: orig,
name: s.Prefix, name: s.Prefix,
logger: logger.Clone().AddPrefix("[" + s.Prefix + "] "), logger: logger,
s: s, s: s,
} }

View File

@ -1,25 +1,29 @@
package rdb_test package rdb_test
import ( import (
"log"
"os" "os"
"testing" "testing"
"git.bit5.ru/backend/colog"
"git.bit5.ru/backend/rdb" "git.bit5.ru/backend/rdb"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/go-logr/logr"
"github.com/go-logr/stdr"
) )
const verbosity = 0
func getPool() *rdb.Pool { func getPool() *rdb.Pool {
pool := rdb.OpenPool(rdb.RdSettings{Host: "localhost", Port: 6379, Db: 10, ClientName: "test"}, getLogger()) //TODO: use ENV settings as well
pool := rdb.OpenPool(rdb.RdSettings{Host: "localhost", Port: 6379, Db: 10, ClientName: "test", LogLevel: verbosity}, getLogger())
return pool return pool
} }
func getLogger() *colog.CoLog { func getLogger() logr.Logger {
tlog := colog.NewCoLog(os.Stderr, "", 0) //TODO: use ENV settings as well
ft := &colog.StdFormatter{Flag: 0} stdr.SetVerbosity(verbosity)
ft.ColorSupported(true) return stdr.New(log.New(os.Stdout, "", log.Lshortfile))
tlog.SetFormatter(ft)
return tlog
} }
func TestBadConnection(t *testing.T) { func TestBadConnection(t *testing.T) {