github.com/Axway/agent-sdk@v1.1.101/samples/watchclient/pkg/cmd/log.go (about) 1 package cmd 2 3 import ( 4 "errors" 5 "time" 6 7 "github.com/sirupsen/logrus" 8 ) 9 10 const ( 11 lineFormat = "line" 12 jsonFormat = "json" 13 ) 14 15 func getFormatter(format string) (logrus.Formatter, error) { 16 switch format { 17 case lineFormat: 18 return &logrus.TextFormatter{ 19 TimestampFormat: time.RFC3339, 20 FullTimestamp: true, 21 PadLevelText: true, 22 QuoteEmptyFields: true, 23 FieldMap: logrus.FieldMap{ 24 logrus.FieldKeyMsg: "message", 25 }, 26 }, nil 27 case jsonFormat: 28 return &logrus.JSONFormatter{ 29 TimestampFormat: time.RFC3339, 30 FieldMap: logrus.FieldMap{ 31 logrus.FieldKeyMsg: "message", 32 }, 33 }, nil 34 default: 35 return nil, errors.New("[watchclient] invalid log format") 36 } 37 } 38 39 // setupLogging sets up logging for each used package 40 func getLogger(level string, format string) (*logrus.Logger, error) { 41 lvl, err := logrus.ParseLevel(level) 42 if err != nil { 43 return nil, err 44 } 45 46 formatter, err := getFormatter(format) 47 48 if err != nil { 49 return nil, err 50 } 51 52 logger := logrus.New() 53 54 logger.Level = lvl 55 logger.Formatter = formatter 56 57 return logger, nil 58 }