You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.6 KiB
143 lines
3.6 KiB
package logrus |
|
|
|
import ( |
|
"fmt" |
|
"log" |
|
"strings" |
|
) |
|
|
|
// Fields type, used to pass to `WithFields`. |
|
type Fields map[string]interface{} |
|
|
|
// Level type |
|
type Level uint8 |
|
|
|
// Convert the Level to a string. E.g. PanicLevel becomes "panic". |
|
func (level Level) String() string { |
|
switch level { |
|
case DebugLevel: |
|
return "debug" |
|
case InfoLevel: |
|
return "info" |
|
case WarnLevel: |
|
return "warning" |
|
case ErrorLevel: |
|
return "error" |
|
case FatalLevel: |
|
return "fatal" |
|
case PanicLevel: |
|
return "panic" |
|
} |
|
|
|
return "unknown" |
|
} |
|
|
|
// ParseLevel takes a string level and returns the Logrus log level constant. |
|
func ParseLevel(lvl string) (Level, error) { |
|
switch strings.ToLower(lvl) { |
|
case "panic": |
|
return PanicLevel, nil |
|
case "fatal": |
|
return FatalLevel, nil |
|
case "error": |
|
return ErrorLevel, nil |
|
case "warn", "warning": |
|
return WarnLevel, nil |
|
case "info": |
|
return InfoLevel, nil |
|
case "debug": |
|
return DebugLevel, nil |
|
} |
|
|
|
var l Level |
|
return l, fmt.Errorf("not a valid logrus Level: %q", lvl) |
|
} |
|
|
|
// A constant exposing all logging levels |
|
var AllLevels = []Level{ |
|
PanicLevel, |
|
FatalLevel, |
|
ErrorLevel, |
|
WarnLevel, |
|
InfoLevel, |
|
DebugLevel, |
|
} |
|
|
|
// These are the different logging levels. You can set the logging level to log |
|
// on your instance of logger, obtained with `logrus.New()`. |
|
const ( |
|
// PanicLevel level, highest level of severity. Logs and then calls panic with the |
|
// message passed to Debug, Info, ... |
|
PanicLevel Level = iota |
|
// FatalLevel level. Logs and then calls `os.Exit(1)`. It will exit even if the |
|
// logging level is set to Panic. |
|
FatalLevel |
|
// ErrorLevel level. Logs. Used for errors that should definitely be noted. |
|
// Commonly used for hooks to send errors to an error tracking service. |
|
ErrorLevel |
|
// WarnLevel level. Non-critical entries that deserve eyes. |
|
WarnLevel |
|
// InfoLevel level. General operational entries about what's going on inside the |
|
// application. |
|
InfoLevel |
|
// DebugLevel level. Usually only enabled when debugging. Very verbose logging. |
|
DebugLevel |
|
) |
|
|
|
// Won't compile if StdLogger can't be realized by a log.Logger |
|
var ( |
|
_ StdLogger = &log.Logger{} |
|
_ StdLogger = &Entry{} |
|
_ StdLogger = &Logger{} |
|
) |
|
|
|
// StdLogger is what your logrus-enabled library should take, that way |
|
// it'll accept a stdlib logger and a logrus logger. There's no standard |
|
// interface, this is the closest we get, unfortunately. |
|
type StdLogger interface { |
|
Print(...interface{}) |
|
Printf(string, ...interface{}) |
|
Println(...interface{}) |
|
|
|
Fatal(...interface{}) |
|
Fatalf(string, ...interface{}) |
|
Fatalln(...interface{}) |
|
|
|
Panic(...interface{}) |
|
Panicf(string, ...interface{}) |
|
Panicln(...interface{}) |
|
} |
|
|
|
// The FieldLogger interface generalizes the Entry and Logger types |
|
type FieldLogger interface { |
|
WithField(key string, value interface{}) *Entry |
|
WithFields(fields Fields) *Entry |
|
WithError(err error) *Entry |
|
|
|
Debugf(format string, args ...interface{}) |
|
Infof(format string, args ...interface{}) |
|
Printf(format string, args ...interface{}) |
|
Warnf(format string, args ...interface{}) |
|
Warningf(format string, args ...interface{}) |
|
Errorf(format string, args ...interface{}) |
|
Fatalf(format string, args ...interface{}) |
|
Panicf(format string, args ...interface{}) |
|
|
|
Debug(args ...interface{}) |
|
Info(args ...interface{}) |
|
Print(args ...interface{}) |
|
Warn(args ...interface{}) |
|
Warning(args ...interface{}) |
|
Error(args ...interface{}) |
|
Fatal(args ...interface{}) |
|
Panic(args ...interface{}) |
|
|
|
Debugln(args ...interface{}) |
|
Infoln(args ...interface{}) |
|
Println(args ...interface{}) |
|
Warnln(args ...interface{}) |
|
Warningln(args ...interface{}) |
|
Errorln(args ...interface{}) |
|
Fatalln(args ...interface{}) |
|
Panicln(args ...interface{}) |
|
}
|
|
|