Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ require (
github.com/go-stack/stack v1.8.0 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/kr/pretty v0.2.0 // indirect
github.com/rs/zerolog v1.21.0 // indirect
github.com/sirupsen/logrus v1.4.2
github.com/stretchr/testify v1.5.1 // indirect
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.16.0
golang.org/x/tools v0.0.0-20210107193943-4ed967dd8eff // indirect
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
)
7 changes: 7 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/GandalfUK/godoc2ghmd v0.0.0-20170102215518-d78ed169ffe1 h1:g1/c49W6MT/s9RC/rGM5rkBHbazaOjQO03oSnFjf1DU=
github.com/GandalfUK/godoc2ghmd v0.0.0-20170102215518-d78ed169ffe1/go.mod h1:3v/ok4AOWXOhxl3juQtxBtKa0IzHRph5kF8eNrIcDCI=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand All @@ -26,9 +27,13 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM=
github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
Expand Down Expand Up @@ -72,6 +77,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
Expand All @@ -83,6 +89,7 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20210107193943-4ed967dd8eff h1:6EkB024TP1fu6cmQqeCNw685zYDVt5g8N1BXh755SQM=
golang.org/x/tools v0.0.0-20210107193943-4ed967dd8eff/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
Expand Down
3 changes: 3 additions & 0 deletions loggers/loggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import (
"strings"
)

//COLDBREW_CALL_STACK_SIZE number stack frame involved between the logger call from application to zap call.
const COLDBREW_CALL_STACK_SIZE = 3

// Level type
type Level uint32

Expand Down
5 changes: 1 addition & 4 deletions loggers/zap/zap.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ type logger struct {
cfg zap.Config
}

//COLBREW_CALL_STACK_SIZE number stack frame involved between the logger call from application to zap call.
const COLBREW_CALL_STACK_SIZE = 3

func (l *logger) Log(ctx context.Context, level loggers.Level, skip int, args ...interface{}) {

logger := l.logger
Expand Down Expand Up @@ -110,7 +107,7 @@ func NewLogger(options ...loggers.Option) loggers.BaseLogger {
}
l, err := zapCfg.Build()

l = l.WithOptions(zap.AddCallerSkip(COLBREW_CALL_STACK_SIZE))
l = l.WithOptions(zap.AddCallerSkip(loggers.COLBREW_CALL_STACK_SIZE))
if err != nil {
//should we fail? will use sugared log here
l, _ = zap.NewProduction()
Expand Down
104 changes: 104 additions & 0 deletions loggers/zerolog/zerolog.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package zerolog

import (
"context"
"os"

"github.com/go-coldbrew/log/loggers"
"github.com/rs/zerolog"
)

type logger struct {
logger zerolog.Logger
level loggers.Level
}

func (l *logger) GetLevel() loggers.Level {
return l.level
}

func (l *logger) SetLevel(level loggers.Level) {
l.logger = l.logger.Level(toZerologLevel(level))
l.level = level
}

func (l *logger) Log(ctx context.Context, level loggers.Level, skip int, args ...interface{}) {

logger := l.logger

var msg string
//if there are odd number of elements in args, first will be treated as a message and rest will
//be key value pair to log in json format
if len(args)%2 != 0 {
msg = args[0].(string)
args = args[1:]
}

logFunc := logger.Error
switch level {
case loggers.DebugLevel:
logFunc = logger.Debug
case loggers.InfoLevel:
logFunc = logger.Info
case loggers.WarnLevel:
logFunc = logger.Warn
case loggers.ErrorLevel:
logFunc = logger.Error
}

var logEvent *zerolog.Event = logFunc()
ctxFields := loggers.FromContext(ctx)
if ctxFields != nil {
logEvent = logFunc().Fields(ctxFields)
}

//log each message field as key value pair from the args
for i := 0; i < len(args); i += 2 {
logEvent = logEvent.Interface(args[i].(string), args[i+1])
}

logEvent.Msg(msg)
}

func toZerologLevel(level loggers.Level) zerolog.Level {
switch level {
case loggers.DebugLevel:
return zerolog.DebugLevel
case loggers.InfoLevel:
return zerolog.InfoLevel
case loggers.WarnLevel:
return zerolog.WarnLevel
case loggers.ErrorLevel:
return zerolog.ErrorLevel
default:
return zerolog.ErrorLevel
}
}

func NewLogger(options ...loggers.Option) loggers.BaseLogger {

opt := loggers.GetDefaultOptions()
// read options
for _, f := range options {
f(&opt)
}

zerolog.CallerFieldName = opt.CallerFieldName
zerolog.LevelFieldName = opt.LevelFieldName

log := zerolog.New(os.Stdout).
With().
Logger().
Level(toZerologLevel(opt.Level))

if opt.CallerInfo {
log = log.With().
CallerWithSkipFrameCount(loggers.COLDBREW_CALL_STACK_SIZE + 2).
Logger()
}

return &logger{
logger: log,
level: opt.Level,
}
}