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  }