Skip to content

Commit

Permalink
refactor(common): logger to accept optional options
Browse files Browse the repository at this point in the history
  • Loading branch information
pyadav committed Feb 14, 2024
1 parent 3c4c305 commit 1bd595a
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
3 changes: 2 additions & 1 deletion common/logger/config.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package logger

type Config struct {
Json bool `yaml:"json" json:"json,omitempty" mapstructure:"json" default:"false"`
Level int `yaml:"level" json:"level,omitempty" mapstructure:"level" default:"0"`
Json bool `yaml:"json" json:"json,omitempty" mapstructure:"json" default:"false"`
}
23 changes: 20 additions & 3 deletions common/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,26 @@ import (
"os"
)

func New(formatAsJson bool, opts *slog.HandlerOptions) *slog.Logger {
type Option func(*slog.HandlerOptions)

func WithLevel(level slog.Level) Option {
return func(opts *slog.HandlerOptions) {
opts.Level = level
}
}

func New(formatAsJson bool, options ...Option) *slog.Logger {
handlerOptions := &slog.HandlerOptions{}

if len(options) > 0 {
for _, option := range options {
option(handlerOptions)
}
}

if formatAsJson {
return slog.New(slog.NewJSONHandler(os.Stdout, opts))
return slog.New(slog.NewJSONHandler(os.Stdout, handlerOptions))
}
return slog.New(slog.NewTextHandler(os.Stdout, opts))

return slog.New(slog.NewTextHandler(os.Stdout, handlerOptions))
}
3 changes: 2 additions & 1 deletion gateway/cmd/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"context"
"fmt"
"log/slog"
"os"
"os/signal"
"syscall"
Expand All @@ -20,7 +21,7 @@ func Serve(cfg *config.Config) error {
ctx, cancelFunc := signal.NotifyContext(context.Background(), syscall.SIGTERM, syscall.SIGINT)
defer cancelFunc()

logger := logger.New(cfg.Log.Json, nil)
logger := logger.New(cfg.Log.Json, logger.WithLevel(slog.Level(cfg.Log.Level)))
rdb := redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%d", cfg.Redis.Host, cfg.Redis.Port),
Username: cfg.Redis.Username,
Expand Down

0 comments on commit 1bd595a

Please sign in to comment.