Skip to content

Commit

Permalink
Add proposal for zap logging wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
alxmk committed Dec 20, 2023
1 parent f04636a commit a83b95a
Show file tree
Hide file tree
Showing 71 changed files with 10,161 additions and 0 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ require (
go.opentelemetry.io/otel/sdk v1.21.0
go.opentelemetry.io/otel/trace v1.21.0
go.uber.org/automaxprocs v1.5.3
go.uber.org/zap v1.26.0
golang.org/x/net v0.19.0
golang.org/x/time v0.5.0
google.golang.org/grpc v1.60.1
Expand Down Expand Up @@ -87,6 +88,7 @@ require (
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel/metric v1.21.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
golang.org/x/sync v0.4.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,10 @@ go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v8
go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=
go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
Expand Down
90 changes: 90 additions & 0 deletions logging/opazap/opazap.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package opazap

import (
"fmt"

"github.com/open-policy-agent/opa/logging"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)

func Wrap(log *zap.Logger, level *zap.AtomicLevel) *Wrapper {
return &Wrapper{internal: log, level: level}
}

type Wrapper struct {
internal *zap.Logger
level *zap.AtomicLevel
}

func toZapFields(fields map[string]interface{}) []zap.Field {
var zapFields []zap.Field
for k, v := range fields {
switch t := v.(type) {
case error:
zapFields = append(zapFields, zap.NamedError(k, t))
case string:
zapFields = append(zapFields, zap.String(k, t))
case bool:
zapFields = append(zapFields, zap.Bool(k, t))
case int:
zapFields = append(zapFields, zap.Int(k, t))
default:
zapFields = append(zapFields, zap.Any(k, v))
}
}
return zapFields
}

func (w *Wrapper) Debug(f string, a ...interface{}) {
w.internal.Debug(fmt.Sprintf(f, a...))
}

func (w *Wrapper) Info(f string, a ...interface{}) {
w.internal.Info(fmt.Sprintf(f, a...))
}

func (w *Wrapper) Error(f string, a ...interface{}) {
w.internal.Error(fmt.Sprintf(f, a...))
}

func (w *Wrapper) Warn(f string, a ...interface{}) {
w.internal.Warn(fmt.Sprintf(f, a...))
}

func (w *Wrapper) WithFields(fields map[string]interface{}) logging.Logger {
return &Wrapper{
internal: w.internal.With(toZapFields(fields)...),
level: w.level,
}
}

func (w *Wrapper) GetLevel() logging.Level {
switch w.internal.Level() {
case zap.ErrorLevel:
return logging.Error
case zap.WarnLevel:
return logging.Warn
case zap.DebugLevel:
return logging.Debug
default:
return logging.Info
}
}

func (w *Wrapper) SetLevel(l logging.Level) {
var newLevel zapcore.Level
switch l {
case logging.Error:
newLevel = zap.ErrorLevel
case logging.Warn:
newLevel = zap.WarnLevel
case logging.Info:
newLevel = zap.InfoLevel
case logging.Debug:
newLevel = zap.DebugLevel
default:
return
}
w.level.SetLevel(newLevel)
}
15 changes: 15 additions & 0 deletions vendor/go.uber.org/multierr/.codecov.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions vendor/go.uber.org/multierr/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

88 changes: 88 additions & 0 deletions vendor/go.uber.org/multierr/CHANGELOG.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions vendor/go.uber.org/multierr/LICENSE.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions vendor/go.uber.org/multierr/Makefile

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions vendor/go.uber.org/multierr/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a83b95a

Please sign in to comment.