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 }