github.com/SAP/cloud-mta-build-tool@v1.2.27/internal/logs/logger.go (about)

     1  package logs
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/sirupsen/logrus"
     8  	pref "github.com/x-cray/logrus-prefixed-formatter"
     9  )
    10  
    11  const (
    12  	// MbtLogLevel tool log identifier
    13  	MbtLogLevel = "MBT_LOG_LEVEL"
    14  	// DefLvl default level - should be error
    15  	DefLvl = "info"
    16  )
    17  
    18  // Logger expose for usage
    19  var Logger *logrus.Logger
    20  
    21  // NewLogger - init logger
    22  func NewLogger() *logrus.Logger {
    23  
    24  	var level logrus.Level
    25  	lvl := getLogLevel()
    26  	// In case level doesn't set will not print any message
    27  	level = logLevel(lvl)
    28  	logger := &logrus.Logger{
    29  		Out:   os.Stdout,
    30  		Level: level,
    31  		Formatter: &pref.TextFormatter{
    32  			DisableColors:   false,
    33  			TimestampFormat: "2006-01-02 15:04:05",
    34  			FullTimestamp:   true,
    35  			ForceFormatting: true,
    36  		},
    37  	}
    38  	Logger = logger
    39  	return Logger
    40  }
    41  
    42  // GetLogLevel - Get level from env
    43  func getLogLevel() string {
    44  	// TODO Check env if coming from external config or local
    45  	lvl, _ := os.LookupEnv(MbtLogLevel)
    46  	if lvl != "" {
    47  		return lvl
    48  	}
    49  	return DefLvl
    50  }
    51  
    52  func logLevel(lvl string) logrus.Level {
    53  
    54  	switch lvl {
    55  	case "debug":
    56  		// Used for tracing
    57  		return logrus.DebugLevel
    58  	case "info":
    59  		return logrus.InfoLevel
    60  	case "error":
    61  		return logrus.ErrorLevel
    62  	case "warn":
    63  		return logrus.WarnLevel
    64  	case "fatal":
    65  		return logrus.FatalLevel
    66  	case "panic":
    67  		return logrus.PanicLevel
    68  	default:
    69  		panic(fmt.Sprintf("the specified %s log level is not supported", lvl))
    70  	}
    71  }