From 7a9de18ccec27dfa63e1b8076da0724b3cdd41ee Mon Sep 17 00:00:00 2001 From: mo khan Date: Fri, 4 Apr 2025 17:03:21 -0600 Subject: refactor: switch to zerolog logger --- pkg/app/app.go | 6 +++++- pkg/authz/casbin.go | 10 +++++----- pkg/authz/cedar.go | 4 ++-- pkg/authz/token.go | 4 ++-- pkg/log/init.go | 30 ------------------------------ pkg/policies/init.go | 16 ++++++++-------- pkg/prxy/prxy.go | 6 +++--- pkg/srv/srv.go | 4 ++-- 8 files changed, 27 insertions(+), 53 deletions(-) delete mode 100644 pkg/log/init.go (limited to 'pkg') diff --git a/pkg/app/app.go b/pkg/app/app.go index a8dedc10..861ce59a 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1,15 +1,19 @@ package app import ( + "os" + + "github.com/xlgmokha/x/pkg/log" "gitlab.com/mokhax/spike/pkg/authz" "gitlab.com/mokhax/spike/pkg/cfg" "gitlab.com/mokhax/spike/pkg/srv" ) func Start(bindAddr string) error { + logger := log.New(os.Stdout, log.Fields{"app": "gtwy"}) mux := authz.HTTP(authz.WithCasbin(), Routes()) return srv.Run(cfg.New( bindAddr, - cfg.WithMux(mux), + cfg.WithMux(log.HTTP(logger)(mux)), )) } diff --git a/pkg/authz/casbin.go b/pkg/authz/casbin.go index 99dcc8ec..140bdb98 100644 --- a/pkg/authz/casbin.go +++ b/pkg/authz/casbin.go @@ -6,8 +6,8 @@ import ( "net/http" "github.com/casbin/casbin/v3" + "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/x" - xlog "gitlab.com/mokhax/spike/pkg/log" ) func WithCasbin() Authorizer { @@ -16,7 +16,7 @@ func WithCasbin() Authorizer { return AuthorizerFunc(func(r *http.Request) bool { host, _, err := net.SplitHostPort(r.Host) if err != nil { - xlog.WithFields(r, xlog.Fields{"error": err}) + log.WithFields(r.Context(), log.Fields{"error": err}) return false } @@ -26,13 +26,13 @@ func WithCasbin() Authorizer { } ok, err := enforcer.Enforce(subject, host, r.Method, r.URL.Path) if err != nil { - xlog.WithFields(r, xlog.Fields{"error": err}) + log.WithFields(r.Context(), log.Fields{"error": err}) return false } fmt.Printf("%v: %v -> %v %v%v\n", ok, subject, r.Method, host, r.URL.Path) - xlog.WithFields(r, xlog.Fields{ - "ok": ok, + log.WithFields(r.Context(), log.Fields{ + "authz": ok, "subject": subject, "action": r.Method, "domain": host, diff --git a/pkg/authz/cedar.go b/pkg/authz/cedar.go index 9c20a3f4..18674c74 100644 --- a/pkg/authz/cedar.go +++ b/pkg/authz/cedar.go @@ -5,8 +5,8 @@ import ( "net/http" cedar "github.com/cedar-policy/cedar-go" + "github.com/xlgmokha/x/pkg/log" "gitlab.com/mokhax/spike/pkg/gid" - xlog "gitlab.com/mokhax/spike/pkg/log" "gitlab.com/mokhax/spike/pkg/policies" ) @@ -14,7 +14,7 @@ func WithCedar() Authorizer { return AuthorizerFunc(func(r *http.Request) bool { host, _, err := net.SplitHostPort(r.Host) if err != nil { - xlog.WithFields(r, xlog.Fields{"error": err}) + log.WithFields(r.Context(), log.Fields{"error": err}) return false } subject, found := TokenFrom(r).Subject() diff --git a/pkg/authz/token.go b/pkg/authz/token.go index 5985a0fc..2794bf4a 100644 --- a/pkg/authz/token.go +++ b/pkg/authz/token.go @@ -5,7 +5,7 @@ import ( "strings" "github.com/lestrrat-go/jwx/v3/jwt" - xlog "gitlab.com/mokhax/spike/pkg/log" + "github.com/xlgmokha/x/pkg/log" ) func TokenFrom(r *http.Request) jwt.Token { @@ -22,7 +22,7 @@ func TokenFrom(r *http.Request) jwt.Token { ) if err != nil { - xlog.WithFields(r, xlog.Fields{"error": err}) + log.WithFields(r.Context(), log.Fields{"error": err}) return jwt.New() } diff --git a/pkg/log/init.go b/pkg/log/init.go deleted file mode 100644 index 7d9456b6..00000000 --- a/pkg/log/init.go +++ /dev/null @@ -1,30 +0,0 @@ -package log - -import ( - "fmt" - "log" - "log/slog" - "net/http" - "os" - - "github.com/xlgmokha/x/pkg/env" -) - -var Logger *slog.Logger -var Default *log.Logger -var Handler slog.Handler - -func init() { - Handler = slog.NewJSONHandler(os.Stdout, nil) - Logger = slog.New(Handler).With("env", env.Fetch("APP_ENV", "development")) - Default = slog.NewLogLogger(Handler, slog.LevelInfo) -} - -type Fields map[string]interface{} - -func WithFields(r *http.Request, fields Fields) { - for key, value := range fields { - attr := slog.String(key, fmt.Sprintf("%v", value)) - Logger.LogAttrs(r.Context(), slog.LevelDebug, "x", attr) - } -} diff --git a/pkg/policies/init.go b/pkg/policies/init.go index 42a23223..f5225a91 100644 --- a/pkg/policies/init.go +++ b/pkg/policies/init.go @@ -5,11 +5,13 @@ import ( _ "embed" "fmt" "io/fs" + "os" "strings" "github.com/cedar-policy/cedar-go" "github.com/cedar-policy/cedar-go/types" - xlog "gitlab.com/mokhax/spike/pkg/log" + "github.com/rs/zerolog" + "github.com/xlgmokha/x/pkg/log" ) //go:embed *.cedar *.json @@ -17,6 +19,7 @@ var files embed.FS var All *cedar.PolicySet = cedar.NewPolicySet() var Entities cedar.EntityMap = cedar.EntityMap{} +var Logger *zerolog.Logger = log.New(os.Stderr, log.Fields{"pkg": "policies"}) func init() { err := fs.WalkDir(files, ".", func(path string, d fs.DirEntry, err error) error { @@ -56,7 +59,7 @@ func init() { }) if err != nil { - xlog.Default.Printf("error: %v\n", err) + Logger.Err(err) } } @@ -65,14 +68,11 @@ func Allowed(request cedar.Request) bool { fmt.Printf("%v: %v -> %v %v%v\n", ok, request.Principal, request.Action.ID, request.Context.Map(), request.Resource.ID) if len(diagnostic.Errors) > 0 { - for err := range diagnostic.Errors { - xlog.Default.Printf("%v\n", err) - } + log.New(os.Stderr, log.Fields{"errors": diagnostic.Errors}) + Logger.Error().Fields(log.Fields{"errors": diagnostic.Errors}.ToMap()) } if len(diagnostic.Reasons) > 0 { - for reason := range diagnostic.Reasons { - xlog.Default.Printf("%v\n", reason) - } + Logger.Warn().Fields(log.Fields{"reasons": diagnostic.Reasons}.ToMap()) } return ok == types.Allow } diff --git a/pkg/prxy/prxy.go b/pkg/prxy/prxy.go index 809fdc19..43565bd3 100644 --- a/pkg/prxy/prxy.go +++ b/pkg/prxy/prxy.go @@ -7,8 +7,8 @@ import ( "net/http/httputil" "net/url" + "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/x" - xlog "gitlab.com/mokhax/spike/pkg/log" ) func New(routes map[string]string) http.Handler { @@ -21,7 +21,7 @@ func New(routes map[string]string) http.Handler { Rewrite: func(r *httputil.ProxyRequest) { host, _, err := net.SplitHostPort(r.In.Host) if err != nil { - xlog.WithFields(r.In, xlog.Fields{"error": err}) + log.WithFields(r.In.Context(), log.Fields{"error": err}) return } @@ -37,7 +37,7 @@ func New(routes map[string]string) http.Handler { return nil }, ErrorHandler: func(w http.ResponseWriter, r *http.Request, err error) { - xlog.WithFields(r, xlog.Fields{"error": err}) + log.WithFields(r.Context(), log.Fields{"error": err}) }, } } diff --git a/pkg/srv/srv.go b/pkg/srv/srv.go index ccd02e0f..e7189406 100644 --- a/pkg/srv/srv.go +++ b/pkg/srv/srv.go @@ -1,11 +1,11 @@ package srv import ( + "log" "net/http" "time" "gitlab.com/mokhax/spike/pkg/cfg" - xlog "gitlab.com/mokhax/spike/pkg/log" ) func New(c *cfg.Config) *http.Server { @@ -17,7 +17,7 @@ func New(c *cfg.Config) *http.Server { ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, IdleTimeout: 30 * time.Second, - ErrorLog: xlog.Default, + ErrorLog: log.Default(), } } -- cgit v1.2.3