From dedb87f46a56f38204b65be0da4b5ffe1bee04f7 Mon Sep 17 00:00:00 2001 From: Aaron Turner Date: Mon, 19 Aug 2024 20:43:33 -0700 Subject: [PATCH] switch to console logger by default Refs: #1001 --- Makefile | 2 +- cmd/aws-sso/logger.go | 8 +++-- go.mod | 4 +-- go.sum | 4 +-- internal/ecs/client/client.go | 3 +- internal/ecs/http.go | 4 +-- internal/ecs/server/server.go | 3 +- internal/helper/helper.go | 3 +- internal/logger/init.go | 54 +++++++++++++++++++++++++++++++++ internal/predictor/predictor.go | 3 +- internal/sso/logger.go | 7 +++-- internal/storage/storage.go | 3 +- internal/tags/logger.go | 7 +++-- internal/url/url.go | 3 +- internal/utils/utils.go | 3 +- 15 files changed, 91 insertions(+), 20 deletions(-) create mode 100644 internal/logger/init.go diff --git a/Makefile b/Makefile index 9fcd925c..4c213c2b 100644 --- a/Makefile +++ b/Makefile @@ -194,7 +194,7 @@ lint: ## Run golangci-lint test-homebrew: $(DIST_DIR)$(PROJECT_NAME) ## Run the homebrew tests @$(DIST_DIR)$(PROJECT_NAME) --config /dev/null version 2>/dev/null | grep -q "AWS SSO CLI Version $(PROJECT_VERSION)" - @$(DIST_DIR)$(PROJECT_NAME) --config /dev/null 2>&1 | grep -q "no AWS SSO providers have been configured." + @$(DIST_DIR)$(PROJECT_NAME) --config /dev/null 2>&1 | grep -q "no AWS SSO providers have been configured" # Build targets for our supported plaforms windows: $(WINDOWS_BIN) ## Build 64bit x86 Windows binary diff --git a/cmd/aws-sso/logger.go b/cmd/aws-sso/logger.go index ad18b64e..f0d69e43 100644 --- a/cmd/aws-sso/logger.go +++ b/cmd/aws-sso/logger.go @@ -18,10 +18,14 @@ package main * along with this program. If not, see . */ -import "github.com/synfinatic/flexlog" +import ( + "github.com/synfinatic/aws-sso-cli/internal/logger" + "github.com/synfinatic/flexlog" +) var log flexlog.FlexLogger +// initialize the default logger to log to stderr and log at the warn level func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } diff --git a/go.mod b/go.mod index f91a7cd5..5c365285 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.2 + github.com/synfinatic/flexlog v0.0.3 github.com/synfinatic/gotable v0.0.3 github.com/willabides/kongplete v0.2.0 golang.org/x/crypto v0.25.0 // indirect @@ -46,7 +46,7 @@ require ( github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.11 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.20 github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mattn/go-tty v0.0.3 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect diff --git a/go.sum b/go.sum index 322329d5..ba650e45 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.2 h1:rdybUZfIBKuARa8yU26luzNC4nJ34UKwzid4yZ7PHOg= -github.com/synfinatic/flexlog v0.0.2/go.mod h1:YQiokc3ujp5GJA04wAXo6ce/LsUK6SrUXsOnHqGKsas= +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/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/ecs/client/client.go b/internal/ecs/client/client.go index e2dc5f1b..5e1d3e66 100644 --- a/internal/ecs/client/client.go +++ b/internal/ecs/client/client.go @@ -32,6 +32,7 @@ import ( "github.com/davecgh/go-spew/spew" "github.com/synfinatic/aws-sso-cli/internal/ecs" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/storage" "github.com/synfinatic/flexlog" ) @@ -39,7 +40,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } type ECSClient struct { diff --git a/internal/ecs/http.go b/internal/ecs/http.go index 7fe2e23c..91ea66f4 100644 --- a/internal/ecs/http.go +++ b/internal/ecs/http.go @@ -5,8 +5,8 @@ import ( "net/http" "strconv" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/storage" - "github.com/synfinatic/flexlog" ) // Use format as defined here: https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds @@ -35,7 +35,7 @@ func WriteCreds(w http.ResponseWriter, creds *storage.RoleCredentials) { // JSONResponse return a JSON blob as a result func JSONResponse(w http.ResponseWriter, jdata interface{}) { - log := flexlog.GetLogger() + log := logger.GetLogger() w.Header().Set("Content-Type", CHARSET_JSON) if err := json.NewEncoder(w).Encode(jdata); err != nil { log.Error(err.Error()) diff --git a/internal/ecs/server/server.go b/internal/ecs/server/server.go index 3438b526..4c2936cd 100644 --- a/internal/ecs/server/server.go +++ b/internal/ecs/server/server.go @@ -28,6 +28,7 @@ import ( // "github.com/davecgh/go-spew/spew" "github.com/synfinatic/aws-sso-cli/internal/ecs" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/storage" "github.com/synfinatic/flexlog" ) @@ -35,7 +36,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } type EcsServer struct { diff --git a/internal/helper/helper.go b/internal/helper/helper.go index e2fe1651..074295e1 100644 --- a/internal/helper/helper.go +++ b/internal/helper/helper.go @@ -27,6 +27,7 @@ import ( "path" "github.com/riywo/loginshell" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/utils" "github.com/synfinatic/flexlog" ) @@ -34,7 +35,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } //go:embed bash_profile.sh zshrc.sh aws-sso.fish diff --git a/internal/logger/init.go b/internal/logger/init.go new file mode 100644 index 00000000..ce8bd1d5 --- /dev/null +++ b/internal/logger/init.go @@ -0,0 +1,54 @@ +package logger + +import ( + "log/slog" + "os" + + "github.com/mattn/go-isatty" + "github.com/synfinatic/flexlog" +) + +var logger flexlog.FlexLogger +var CreateLogger flexlog.NewLoggerFunc + +// 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) + + slog.SetDefault(logger.GetLogger()) +} + +func SetLogger(l flexlog.FlexLogger) { + logger = l +} + +func GetLogger() flexlog.FlexLogger { + return logger +} + +func SetDefaultLogger(l flexlog.FlexLogger) { + slog.SetDefault(l.GetLogger()) +} + +// SwitchLogger changes the current logger to the specified type +func SwitchLogger(name string) { + var loggers = map[string]flexlog.NewLoggerFunc{ + "console": flexlog.NewConsole, + "json": flexlog.NewJSON, + "tint": flexlog.NewTint, + } + var ok bool + CreateLogger, ok = loggers[name] + if !ok { + logger.Fatal("Invalid logger", "name", name) + } + + // switch the logger + logger = flexlog.NewLogger(CreateLogger, logger.Writer(), logger.AddSource(), logger.Level(), logger.Color()) + slog.SetDefault(logger.GetLogger()) +} diff --git a/internal/predictor/predictor.go b/internal/predictor/predictor.go index fdc5305c..09b02404 100644 --- a/internal/predictor/predictor.go +++ b/internal/predictor/predictor.go @@ -25,6 +25,7 @@ import ( // "github.com/davecgh/go-spew/spew" "github.com/goccy/go-yaml" "github.com/posener/complete" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/sso" "github.com/synfinatic/aws-sso-cli/internal/utils" "github.com/synfinatic/flexlog" @@ -33,7 +34,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } type Predictor struct { diff --git a/internal/sso/logger.go b/internal/sso/logger.go index 3de92b42..726d5ab2 100644 --- a/internal/sso/logger.go +++ b/internal/sso/logger.go @@ -18,10 +18,13 @@ package sso * along with this program. If not, see . */ -import "github.com/synfinatic/flexlog" +import ( + "github.com/synfinatic/aws-sso-cli/internal/logger" + "github.com/synfinatic/flexlog" +) var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } diff --git a/internal/storage/storage.go b/internal/storage/storage.go index d305bf01..19e09081 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -25,6 +25,7 @@ import ( "reflect" "time" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/utils" "github.com/synfinatic/flexlog" "github.com/synfinatic/gotable" @@ -33,7 +34,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } // this struct should be cached for long term if possible diff --git a/internal/tags/logger.go b/internal/tags/logger.go index 5494006e..f6dee44c 100644 --- a/internal/tags/logger.go +++ b/internal/tags/logger.go @@ -18,10 +18,13 @@ package tags * along with this program. If not, see . */ -import "github.com/synfinatic/flexlog" +import ( + "github.com/synfinatic/aws-sso-cli/internal/logger" + "github.com/synfinatic/flexlog" +) var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } diff --git a/internal/url/url.go b/internal/url/url.go index 68d6902f..d6a6b1cd 100644 --- a/internal/url/url.go +++ b/internal/url/url.go @@ -28,6 +28,7 @@ import ( "github.com/atotto/clipboard" "github.com/skratchdot/open-golang/open" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/aws-sso-cli/internal/utils" "github.com/synfinatic/flexlog" // default opener @@ -36,7 +37,7 @@ import ( var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } // taken from https://github.com/honsiorovskyi/open-url-in-container/blob/1.0.3/launcher.sh diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 6b65c994..077c2657 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -28,13 +28,14 @@ import ( "strings" "time" + "github.com/synfinatic/aws-sso-cli/internal/logger" "github.com/synfinatic/flexlog" ) var log flexlog.FlexLogger func init() { - log = flexlog.GetLogger() + log = logger.GetLogger() } const MAX_AWS_ACCOUNTID = 999999999999