github.com/argoproj/argo-cd/v3@v3.2.1/util/log/logrus.go (about) 1 package log 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 adapter "github.com/bombsimon/logrusr/v4" 9 "github.com/go-logr/logr" 10 "github.com/sirupsen/logrus" 11 12 "github.com/argoproj/argo-cd/v3/common" 13 ) 14 15 const ( 16 JsonFormat = "json" //nolint:revive //FIXME(var-naming) 17 TextFormat = "text" 18 ) 19 20 func NewLogrusLogger(fieldLogger logrus.FieldLogger) logr.Logger { 21 return adapter.New(fieldLogger, adapter.WithFormatter(func(val any) any { 22 return fmt.Sprintf("%v", val) 23 })) 24 } 25 26 // NewWithCurrentConfig create logrus logger by using current configuration 27 func NewWithCurrentConfig() *logrus.Logger { 28 l := logrus.New() 29 l.SetFormatter(CreateFormatter(os.Getenv(common.EnvLogFormat))) 30 l.SetLevel(createLogLevel()) 31 return l 32 } 33 34 // CreateFormatter create logrus formatter by string 35 func CreateFormatter(logFormat string) logrus.Formatter { 36 var formatType logrus.Formatter 37 switch strings.ToLower(logFormat) { 38 case JsonFormat: 39 formatType = &logrus.JSONFormatter{ 40 TimestampFormat: checkTimestampFormat(), 41 } 42 case TextFormat: 43 formatType = &logrus.TextFormatter{ 44 ForceColors: checkForceLogColors(), 45 FullTimestamp: checkEnableFullTimestamp(), 46 TimestampFormat: checkTimestampFormat(), 47 } 48 default: 49 formatType = &logrus.JSONFormatter{ 50 TimestampFormat: checkTimestampFormat(), 51 } 52 } 53 54 return formatType 55 } 56 57 func createLogLevel() logrus.Level { 58 level, err := logrus.ParseLevel(os.Getenv(common.EnvLogLevel)) 59 if err != nil { 60 level = logrus.InfoLevel 61 } 62 return level 63 } 64 65 func checkForceLogColors() bool { 66 return strings.ToLower(os.Getenv("FORCE_LOG_COLORS")) == "1" 67 } 68 69 func checkEnableFullTimestamp() bool { 70 return strings.ToLower(os.Getenv(common.EnvLogFormatEnableFullTimestamp)) == "1" 71 } 72 73 func checkTimestampFormat() string { 74 return os.Getenv(common.EnvLogFormatTimestamp) 75 }