diff --git a/go.mod b/go.mod index 5c365285..ded24c12 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/posener/complete v1.2.3 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 github.com/stretchr/testify v1.9.0 - github.com/synfinatic/flexlog v0.0.3 + github.com/synfinatic/flexlog v0.0.5 github.com/synfinatic/gotable v0.0.3 github.com/willabides/kongplete v0.2.0 golang.org/x/crypto v0.25.0 // indirect diff --git a/go.sum b/go.sum index ba650e45..36f562eb 100644 --- a/go.sum +++ b/go.sum @@ -394,8 +394,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/synfinatic/flexlog v0.0.3 h1:RUTlSnkzxIi1r6/X1QNbMI1D1butjF5fhMF/3HT/mkU= -github.com/synfinatic/flexlog v0.0.3/go.mod h1:73burLPh9m9iL538Gq95AqkyOQjb15FkO4UW4hf8qm0= +github.com/synfinatic/flexlog v0.0.5 h1:20NPoHt9KH1Acz4Z/em4e77takmydkQTGfdnGOlZVw0= +github.com/synfinatic/flexlog v0.0.5/go.mod h1:ukL0npznLj2SG+67DRqb+i36YAZMINKYI+985kiqxvg= github.com/synfinatic/gotable v0.0.3 h1:KI01OLECmOv7laXVNtw6T4kEHue09z9OuQwtNB8D5Mw= github.com/synfinatic/gotable v0.0.3/go.mod h1:kWXD1bxZY6tyu6tWK3CIbGAOrtF7teg0ZQotUMDvoMw= github.com/veqryn/slog-json v0.3.0 h1:jI2ORtKP1uQss4zmTR2uCpIDw/XnUvVdr5+0vDNl4Gk= diff --git a/internal/logger/init.go b/internal/logger/logger.go similarity index 81% rename from internal/logger/init.go rename to internal/logger/logger.go index ce8bd1d5..19a2a5d2 100644 --- a/internal/logger/init.go +++ b/internal/logger/logger.go @@ -10,15 +10,15 @@ import ( var logger flexlog.FlexLogger var CreateLogger flexlog.NewLoggerFunc +var defaultLevel slog.Level = slog.LevelWarn // initialize the default logger to log to stderr and log at the warn level func init() { w := os.Stderr color := isatty.IsTerminal(w.Fd()) - addSource := false - level := slog.LevelWarn - logger = flexlog.NewLogger(flexlog.NewConsole, w, addSource, level, color) + CreateLogger = flexlog.NewConsole + logger = flexlog.NewLogger(CreateLogger, w, false, defaultLevel, color) slog.SetDefault(logger.GetLogger()) } @@ -45,7 +45,8 @@ func SwitchLogger(name string) { var ok bool CreateLogger, ok = loggers[name] if !ok { - logger.Fatal("Invalid logger", "name", name) + logger.Fatal("invalid logger", "name", name) + return // not reached except in tests } // switch the logger diff --git a/internal/logger/logger_test.go b/internal/logger/logger_test.go new file mode 100644 index 00000000..81bc2678 --- /dev/null +++ b/internal/logger/logger_test.go @@ -0,0 +1,36 @@ +package logger + +import ( + "log/slog" + "os" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/synfinatic/flexlog" + testlogger "github.com/synfinatic/flexlog/test" +) + +func TestSetLogger(t *testing.T) { + l := flexlog.NewLogger(flexlog.NewConsole, os.Stderr, false, slog.LevelWarn, false) + logger.SetLogger(l.GetLogger()) +} + +func TestSwitchLogger(t *testing.T) { + l := flexlog.NewLogger(flexlog.NewConsole, os.Stderr, false, slog.LevelWarn, false) + logger.SetLogger(l.GetLogger()) + SwitchLogger("json") + + // setup logger for tests + oldLogger := logger.Copy() + tLogger := testlogger.NewTestLogger("DEBUG") + defer tLogger.Close() + logger = tLogger + + defer func() { logger = oldLogger }() + + SwitchLogger("invalid") + msg := testlogger.LogMessage{} + assert.NoError(t, tLogger.GetNext(&msg)) + assert.Equal(t, flexlog.LevelFatal, msg.Level) + assert.Equal(t, "invalid logger", msg.Message) +} diff --git a/internal/sso/settings.go b/internal/sso/settings.go index a25d1581..aa67b9e8 100644 --- a/internal/sso/settings.go +++ b/internal/sso/settings.go @@ -305,14 +305,6 @@ func (s *Settings) Save(configFile string, overwrite bool) error { // configure our settings using the overrides func (s *Settings) setOverrides(override OverrideSettings) { // Setup Logging - if override.LogLines { - s.LogLines = true - } - - if s.LogLines { - log.SetReportCaller(true) - } - if override.LogLevel != "" { s.LogLevel = override.LogLevel } @@ -322,6 +314,11 @@ func (s *Settings) setOverrides(override OverrideSettings) { log.Fatal("Invalid log level", "level", s.LogLevel, "error", err.Error()) } + if override.LogLines { + s.LogLines = true + } + log.SetReportCaller(s.LogLines) + // Other overrides from CLI if override.Browser != "" { s.Browser = override.Browser