...

Source file src/github.com/go-kit/kit/log/logrus/logrus_logger.go

Documentation: github.com/go-kit/kit/log/logrus

     1  // Package logrus provides an adapter to the
     2  // go-kit log.Logger interface.
     3  package logrus
     4  
     5  import (
     6  	"errors"
     7  	"fmt"
     8  
     9  	"github.com/go-kit/log"
    10  	"github.com/sirupsen/logrus"
    11  )
    12  
    13  type Logger struct {
    14  	field logrus.FieldLogger
    15  	level logrus.Level
    16  }
    17  
    18  type Option func(*Logger)
    19  
    20  var errMissingValue = errors.New("(MISSING)")
    21  
    22  // NewLogger returns a Go kit log.Logger that sends log events to a logrus.Logger.
    23  func NewLogger(logger logrus.FieldLogger, options ...Option) log.Logger {
    24  	l := &Logger{
    25  		field: logger,
    26  		level: logrus.InfoLevel,
    27  	}
    28  
    29  	for _, optFunc := range options {
    30  		optFunc(l)
    31  	}
    32  
    33  	return l
    34  }
    35  
    36  // WithLevel configures a logrus logger to log at level for all events.
    37  func WithLevel(level logrus.Level) Option {
    38  	return func(c *Logger) {
    39  		c.level = level
    40  	}
    41  }
    42  
    43  func (l Logger) Log(keyvals ...interface{}) error {
    44  	fields := logrus.Fields{}
    45  	for i := 0; i < len(keyvals); i += 2 {
    46  		if i+1 < len(keyvals) {
    47  			fields[fmt.Sprint(keyvals[i])] = keyvals[i+1]
    48  		} else {
    49  			fields[fmt.Sprint(keyvals[i])] = errMissingValue
    50  		}
    51  	}
    52  
    53  	switch l.level {
    54  	case logrus.InfoLevel:
    55  		l.field.WithFields(fields).Info()
    56  	case logrus.ErrorLevel:
    57  		l.field.WithFields(fields).Error()
    58  	case logrus.DebugLevel:
    59  		l.field.WithFields(fields).Debug()
    60  	case logrus.WarnLevel:
    61  		l.field.WithFields(fields).Warn()
    62  	case logrus.TraceLevel:
    63  		l.field.WithFields(fields).Trace()
    64  	default:
    65  		l.field.WithFields(fields).Print()
    66  	}
    67  
    68  	return nil
    69  }
    70  

View as plain text