github.com/spotahome/redis-operator@v1.2.4/log/log.go (about)

     1  package log
     2  
     3  import (
     4  	"fmt"
     5  	"runtime"
     6  	"strings"
     7  
     8  	"github.com/sirupsen/logrus"
     9  )
    10  
    11  // Level refers to the level of logging
    12  type Level string
    13  
    14  // Logger is an interface that needs to be implemented in order to log.
    15  type Logger interface {
    16  	Debug(...interface{})
    17  	Debugln(...interface{})
    18  	Debugf(string, ...interface{})
    19  
    20  	Info(...interface{})
    21  	Infoln(...interface{})
    22  	Infof(string, ...interface{})
    23  
    24  	Warn(...interface{})
    25  	Warnln(...interface{})
    26  	Warnf(string, ...interface{})
    27  	Warningf(string, ...interface{})
    28  
    29  	Error(...interface{})
    30  	Errorln(...interface{})
    31  	Errorf(string, ...interface{})
    32  
    33  	Fatal(...interface{})
    34  	Fatalln(...interface{})
    35  	Fatalf(string, ...interface{})
    36  
    37  	Panic(...interface{})
    38  	Panicln(...interface{})
    39  	Panicf(string, ...interface{})
    40  
    41  	With(key string, value interface{}) Logger
    42  	WithField(key string, value interface{}) Logger
    43  	WithFields(values map[string]interface{}) Logger
    44  	Set(level Level) error
    45  }
    46  
    47  type logger struct {
    48  	entry *logrus.Entry
    49  }
    50  
    51  func (l logger) Debug(args ...interface{}) {
    52  	l.sourced().Debug(args...)
    53  }
    54  
    55  func (l logger) Debugln(args ...interface{}) {
    56  	l.sourced().Debugln(args...)
    57  }
    58  
    59  func (l logger) Debugf(format string, args ...interface{}) {
    60  	l.sourced().Debugf(format, args...)
    61  }
    62  
    63  func (l logger) Info(args ...interface{}) {
    64  	l.sourced().Info(args...)
    65  }
    66  
    67  func (l logger) Infoln(args ...interface{}) {
    68  	l.sourced().Infoln(args...)
    69  }
    70  
    71  func (l logger) Infof(format string, args ...interface{}) {
    72  	l.sourced().Infof(format, args...)
    73  }
    74  
    75  func (l logger) Warn(args ...interface{}) {
    76  	l.sourced().Warn(args...)
    77  }
    78  
    79  func (l logger) Warnln(args ...interface{}) {
    80  	l.sourced().Warnln(args...)
    81  }
    82  
    83  func (l logger) Warnf(format string, args ...interface{}) {
    84  	l.sourced().Warnf(format, args...)
    85  }
    86  
    87  func (l logger) Warningf(format string, args ...interface{}) {
    88  	l.sourced().Warnf(format, args...)
    89  }
    90  
    91  func (l logger) Error(args ...interface{}) {
    92  	l.sourced().Error(args...)
    93  }
    94  
    95  func (l logger) Errorln(args ...interface{}) {
    96  	l.sourced().Errorln(args...)
    97  }
    98  
    99  func (l logger) Errorf(format string, args ...interface{}) {
   100  	l.sourced().Errorf(format, args...)
   101  }
   102  
   103  func (l logger) Fatal(args ...interface{}) {
   104  	l.sourced().Fatal(args...)
   105  }
   106  
   107  func (l logger) Fatalln(args ...interface{}) {
   108  	l.sourced().Fatalln(args...)
   109  }
   110  
   111  func (l logger) Fatalf(format string, args ...interface{}) {
   112  	l.sourced().Fatalf(format, args...)
   113  }
   114  func (l logger) Panic(args ...interface{}) {
   115  	l.sourced().Panic(args...)
   116  }
   117  func (l logger) Panicln(args ...interface{}) {
   118  	l.sourced().Panicln(args...)
   119  }
   120  func (l logger) Panicf(format string, args ...interface{}) {
   121  	l.sourced().Panicf(format, args...)
   122  }
   123  
   124  func (l logger) With(key string, value interface{}) Logger {
   125  	return &logger{l.entry.WithField(key, value)}
   126  }
   127  
   128  func (l logger) WithField(key string, value interface{}) Logger {
   129  	return &logger{l.entry.WithField(key, value)}
   130  }
   131  
   132  func (l logger) WithFields(values map[string]interface{}) Logger {
   133  	return &logger{l.entry.WithFields(logrus.Fields(values))}
   134  }
   135  
   136  func (l *logger) Set(level Level) error {
   137  	leLev, err := logrus.ParseLevel(string(level))
   138  	if err != nil {
   139  		return err
   140  	}
   141  	l.entry.Logger.Level = leLev
   142  	return nil
   143  }
   144  
   145  func (l logger) sourced() *logrus.Entry {
   146  	_, file, line, ok := runtime.Caller(3)
   147  	if !ok {
   148  		file = "<???>"
   149  		line = 1
   150  	} else {
   151  		slash := strings.LastIndex(file, "/")
   152  		file = file[slash+1:]
   153  	}
   154  	return l.entry.WithField("src", fmt.Sprintf("%s:%d", file, line))
   155  }
   156  
   157  var baseLogger = &logger{
   158  	entry: &logrus.Entry{
   159  		Logger: logrus.New(),
   160  	},
   161  }
   162  
   163  // Base returns the base logger
   164  func Base() Logger {
   165  	return baseLogger
   166  }
   167  
   168  // Debug logs debug message
   169  func Debug(args ...interface{}) {
   170  	baseLogger.sourced().Debug(args...)
   171  }
   172  
   173  // Debugln logs debug message
   174  func Debugln(args ...interface{}) {
   175  	baseLogger.sourced().Debugln(args...)
   176  }
   177  
   178  // Debugf logs debug message
   179  func Debugf(format string, args ...interface{}) {
   180  	baseLogger.sourced().Debugf(format, args...)
   181  }
   182  
   183  // Info logs info message
   184  func Info(args ...interface{}) {
   185  	baseLogger.sourced().Info(args...)
   186  }
   187  
   188  // Infoln logs info message
   189  func Infoln(args ...interface{}) {
   190  	baseLogger.sourced().Infoln(args...)
   191  }
   192  
   193  // Infof logs info message
   194  func Infof(format string, args ...interface{}) {
   195  	baseLogger.sourced().Infof(format, args...)
   196  }
   197  
   198  // Warn logs warn message
   199  func Warn(args ...interface{}) {
   200  	baseLogger.sourced().Warn(args...)
   201  }
   202  
   203  // Warnln logs warn message
   204  func Warnln(args ...interface{}) {
   205  	baseLogger.sourced().Warnln(args...)
   206  }
   207  
   208  // Warnf logs warn message
   209  func Warnf(format string, args ...interface{}) {
   210  	baseLogger.sourced().Warnf(format, args...)
   211  }
   212  
   213  // Error logs error message
   214  func Error(args ...interface{}) {
   215  	baseLogger.sourced().Error(args...)
   216  }
   217  
   218  // Errorln logs error message
   219  func Errorln(args ...interface{}) {
   220  	baseLogger.sourced().Errorln(args...)
   221  }
   222  
   223  // Errorf logs error message
   224  func Errorf(format string, args ...interface{}) {
   225  	baseLogger.sourced().Errorf(format, args...)
   226  }
   227  
   228  // Fatal logs fatal message
   229  func Fatal(args ...interface{}) {
   230  	baseLogger.sourced().Fatal(args...)
   231  }
   232  
   233  // Fatalln logs fatal message
   234  func Fatalln(args ...interface{}) {
   235  	baseLogger.sourced().Fatalln(args...)
   236  }
   237  
   238  // Fatalf logs fatal message
   239  func Fatalf(format string, args ...interface{}) {
   240  	baseLogger.sourced().Fatalf(format, args...)
   241  }
   242  
   243  // With adds a key:value to the logger
   244  func With(key string, value interface{}) Logger {
   245  	return baseLogger.With(key, value)
   246  }
   247  
   248  // WithField adds a key:value to the logger
   249  func WithField(key string, value interface{}) Logger {
   250  	return baseLogger.WithField(key, value)
   251  }
   252  
   253  // Set will set the logger level
   254  func Set(level Level) error {
   255  	return baseLogger.Set(level)
   256  }
   257  
   258  // Panic logs panic message
   259  func Panic(args ...interface{}) {
   260  	baseLogger.Panic(args...)
   261  }
   262  
   263  // Panicln logs panicln message
   264  func Panicln(args ...interface{}) {
   265  	baseLogger.Panicln(args...)
   266  }
   267  
   268  // Panicf logs panicln message
   269  func Panicf(format string, args ...interface{}) {
   270  	baseLogger.Panicf(format, args...)
   271  }