work on eia client
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog"
 | 
			
		||||
@@ -18,57 +19,61 @@ func SetLogger(cmd *cobra.Command, logger *zerolog.Logger) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetLogLevel(cmd *cobra.Command) *zerolog.Level {
 | 
			
		||||
	var level zerolog.Level
 | 
			
		||||
	var err error
 | 
			
		||||
	if envLevel := os.Getenv(ENV_LOG_LEVEL); envLevel != "" {
 | 
			
		||||
		level, err = zerolog.ParseLevel(envLevel)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			Logger(cmd).Err(err).
 | 
			
		||||
				Str("envLogLevel", envLevel).
 | 
			
		||||
				Str("envVar", ENV_LOG_LEVEL).
 | 
			
		||||
				Str("defaultLevel", DefaultLogLevel.String()).
 | 
			
		||||
				Msg("Invalid log level in environment, using default")
 | 
			
		||||
			level = DefaultLogLevel
 | 
			
		||||
		}
 | 
			
		||||
	setLevel, err := GetStrFlagOrEnv(cmd, FLAG_LOG_LEVEL, ENV_LOG_LEVEL)
 | 
			
		||||
	if err != nil || setLevel == "" {
 | 
			
		||||
		Logger(cmd).Warn().Err(err).
 | 
			
		||||
			Str("defaultLogLevel", DefAPILogLevel.String()).
 | 
			
		||||
			Msg("no log level set, using default")
 | 
			
		||||
		return &DefaultLogLevel
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if flagLevel, err := cmd.Flags().GetString(FLAG_LOG_LEVEL); err == nil {
 | 
			
		||||
		level, err = zerolog.ParseLevel(flagLevel)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			Logger(cmd).Err(err).
 | 
			
		||||
				Str("flagLogLevel", flagLevel).
 | 
			
		||||
				Str("defaultLevel", DefaultLogLevel.String()).
 | 
			
		||||
				Msg("Invalid log level in command flag, using default")
 | 
			
		||||
			level = DefaultLogLevel
 | 
			
		||||
		}
 | 
			
		||||
	level, err := zerolog.ParseLevel(setLevel)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Logger(cmd).Err(err).
 | 
			
		||||
			Str("logLevel", setLevel).
 | 
			
		||||
			Str("defaultLevel", DefaultLogLevel.String()).
 | 
			
		||||
			Msg("Invalid log level, using default")
 | 
			
		||||
		level = DefaultLogLevel
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &level
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetAPILogLevel(cmd *cobra.Command) *zerolog.Level {
 | 
			
		||||
	var level zerolog.Level
 | 
			
		||||
	var err error
 | 
			
		||||
	if envLevel := os.Getenv(ENV_API_LOG_LEVEL); envLevel != "" {
 | 
			
		||||
		level, err = zerolog.ParseLevel(envLevel)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			Logger(cmd).Err(err).
 | 
			
		||||
				Str("envLogLevel", envLevel).
 | 
			
		||||
				Str("envVar", ENV_API_LOG_LEVEL).
 | 
			
		||||
				Str("defaultLevel", DefAPILogLevel.String()).
 | 
			
		||||
				Msg("Invalid API log level in environment, using default")
 | 
			
		||||
			level = DefAPILogLevel
 | 
			
		||||
		}
 | 
			
		||||
	setLevel, err := GetStrFlagOrEnv(cmd, FLAG_API_LOG_LEVEL, ENV_API_LOG_LEVEL)
 | 
			
		||||
	if err != nil || setLevel == "" {
 | 
			
		||||
		Logger(cmd).Warn().Err(err).
 | 
			
		||||
			Str("defaultLogLevel", DefAPILogLevel.String()).
 | 
			
		||||
			Msg("no API log level set, using default")
 | 
			
		||||
		return &DefAPILogLevel
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if flagLevel, err := cmd.Flags().GetString(FLAG_API_LOG_LEVEL); err == nil {
 | 
			
		||||
		level, err = zerolog.ParseLevel(flagLevel)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			Logger(cmd).Err(err).
 | 
			
		||||
				Str("flagLogLevel", flagLevel).
 | 
			
		||||
				Str("defaultLevel", DefAPILogLevel.String()).
 | 
			
		||||
				Msg("Invalid API log level in command flag, using default")
 | 
			
		||||
			level = DefAPILogLevel
 | 
			
		||||
		}
 | 
			
		||||
	level, err := zerolog.ParseLevel(setLevel)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Logger(cmd).Err(err).
 | 
			
		||||
			Str("logLevel", setLevel).
 | 
			
		||||
			Str("defaultLevel", DefAPILogLevel.String()).
 | 
			
		||||
			Msg("Invalid API log level, using default")
 | 
			
		||||
		level = DefAPILogLevel
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &level
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// If set and not empty, returns the flag value
 | 
			
		||||
// Otherwise, returns the env value, empty or not
 | 
			
		||||
func GetStrFlagOrEnv(cmd *cobra.Command, flagName string, envName string) (string, error) {
 | 
			
		||||
	flag, err := cmd.Flags().GetString(flagName)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	} else if flag != "" {
 | 
			
		||||
		return flag, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	envVal, set := os.LookupEnv(envName)
 | 
			
		||||
	if !set {
 | 
			
		||||
		return envVal, fmt.Errorf("environment variable %s not set", envName)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return envVal, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user