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 }