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  }