Skip to content

Commit

Permalink
fix(core): variable logger levels
Browse files Browse the repository at this point in the history
  • Loading branch information
ayuhito committed May 6, 2024
1 parent 611a86b commit 8039469
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 13 deletions.
2 changes: 1 addition & 1 deletion core/Taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ tasks:
dev:
deps: [generate]
cmds:
- go run ./cmd/ {{.CLI_ARGS}} -debug -logger=pretty
- go run ./cmd/ {{.CLI_ARGS}} -logger=pretty -level=debug
env:
CGO_ENABLED: "1"

Expand Down
5 changes: 4 additions & 1 deletion core/cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ type ServerConfig struct {

// Logging settings
Logger string `env:"LOGGER"`
Level string `env:"LOGGER_LEVEL"`

// Timeout settings
TimeoutRead time.Duration
Expand Down Expand Up @@ -47,7 +48,8 @@ const (
DefaultDuckDBHost = "./duckdb.dev.db"

// Logging constants.
DefaultLogger = "json"
DefaultLogger = "json"
DefaultLoggerLevel = "info"
)

// NewServerConfig creates a new server config.
Expand All @@ -56,6 +58,7 @@ func NewServerConfig() (*ServerConfig, error) {
Port: DefaultPort,
CacheCleanupInterval: DefaultCacheCleanupInterval,
Logger: DefaultLogger,
Level: DefaultLoggerLevel,
TimeoutRead: DefaultTimeoutRead,
TimeoutWrite: DefaultTimeoutWrite,
TimeoutIdle: DefaultTimeoutIdle,
Expand Down
10 changes: 6 additions & 4 deletions core/cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
)

type StartCommand struct {
Debug bool
Server ServerConfig
AppDB AppDBConfig
AnalyticsDB AnalyticsDBConfig
Expand Down Expand Up @@ -55,9 +54,9 @@ func NewStartCommand() (*StartCommand, error) {

// ParseFlags parses the command line flags for the start command.
func (s *StartCommand) ParseFlags(args []string) error {
fs := flag.NewFlagSet("start", flag.ContinueOnError)
fs.BoolVar(&s.Debug, "debug", false, "Enable verbose debug logging")
fs := flag.NewFlagSet("start", flag.ExitOnError)
fs.StringVar(&s.Server.Logger, "logger", DefaultLogger, "Logger format (json, pretty)")
fs.StringVar(&s.Server.Level, "level", DefaultLoggerLevel, "Logger level (debug, info, warn, error)")
fs.Int64Var(&s.Server.Port, "port", DefaultPort, "Port to listen on")

// Parse flags
Expand All @@ -71,7 +70,10 @@ func (s *StartCommand) ParseFlags(args []string) error {

// Run executes the start command.
func (s *StartCommand) Run(ctx context.Context) error {
ctx = util.SetupLogger(ctx, s.Debug, s.Server.Logger)
ctx, err := util.SetupLogger(ctx, s.Server.Logger, s.Server.Level)
if err != nil {
return errors.Wrap(err, "failed to setup logger")
}
log := zerolog.Ctx(ctx)
log.Info().Msg(GetVersion())

Expand Down
29 changes: 22 additions & 7 deletions core/util/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,40 @@ package util

import (
"context"
"fmt"
"os"

"github.com/rs/zerolog"
)

// SetupLogger sets the default logger.
func SetupLogger(ctx context.Context, isDebug bool, logger string) context.Context {
func SetupLogger(ctx context.Context, logger string, level string) (context.Context, error) {
log := zerolog.New(os.Stderr).With().Timestamp().Logger()

if logger == "pretty" {
switch logger {
case "json":
// Do nothing
case "pretty":
log = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
} else {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
default:
return nil, fmt.Errorf("invalid logger type \"%s\"", logger)
}

if isDebug {
switch level {
case "debug":
log = log.Level(zerolog.DebugLevel)
log.Debug().Msg("Debug logging enabled")
log.Debug().Msg("Logging level set to debug")
case "info":
log = log.Level(zerolog.InfoLevel)
case "warn":
log = log.Level(zerolog.WarnLevel)
log.Info().Msg("Logging level set to warn")
case "error":
log = log.Level(zerolog.ErrorLevel)
log.Info().Msg("Logging level set to error")
default:
return nil, fmt.Errorf("invalid log level \"%s\"", level)
}

return log.WithContext(ctx)
return log.WithContext(ctx), nil
}

0 comments on commit 8039469

Please sign in to comment.