From 9100680162da8c44b85750ec8c72ec93131c3109 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Tue, 21 Mar 2023 17:05:04 +0100 Subject: [PATCH] Allow logger defaults to be configured through environment variables (#266) These environment variables configure defaults for the logger related flags: * `BRICKS_LOG_FILE` * `BRICKS_LOG_LEVEL` * `BRICKS_LOG_FORMAT` --- cmd/root/logger.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cmd/root/logger.go b/cmd/root/logger.go index ebe65f60..29e75ed4 100644 --- a/cmd/root/logger.go +++ b/cmd/root/logger.go @@ -3,6 +3,7 @@ package root import ( "context" "fmt" + "os" "github.com/databricks/bricks/libs/flags" "github.com/databricks/bricks/libs/log" @@ -10,6 +11,12 @@ import ( "golang.org/x/exp/slog" ) +const ( + envBricksLogFile = "BRICKS_LOG_FILE" + envBricksLogLevel = "BRICKS_LOG_LEVEL" + envBricksLogFormat = "BRICKS_LOG_FORMAT" +) + func initializeLogger(ctx context.Context, cmd *cobra.Command) (context.Context, error) { opts := slog.HandlerOptions{} opts.Level = logLevel.Level() @@ -41,6 +48,18 @@ var logLevel = flags.NewLogLevelFlag() var logOutput = flags.OutputText func init() { + // Configure defaults from environment, if applicable. + // If the provided value is invalid it is ignored. + if v, ok := os.LookupEnv(envBricksLogFile); ok { + logFile.Set(v) + } + if v, ok := os.LookupEnv(envBricksLogLevel); ok { + logLevel.Set(v) + } + if v, ok := os.LookupEnv(envBricksLogFormat); ok { + logOutput.Set(v) + } + RootCmd.PersistentFlags().Var(&logFile, "log-file", "file to write logs to") RootCmd.PersistentFlags().Var(&logLevel, "log-level", "log level") RootCmd.PersistentFlags().Var(&logOutput, "log-format", "log output format (text or json)")