127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package logger
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| type Level int8
 | |
| 
 | |
| const (
 | |
| 	// TraceLevel level. Designates finer-grained informational events than the Debug.
 | |
| 	TraceLevel Level = iota - 2
 | |
| 	// DebugLevel level. Usually only enabled when debugging. Very verbose logging.
 | |
| 	DebugLevel
 | |
| 	// InfoLevel is the default logging priority.
 | |
| 	// General operational entries about what's going on inside the application.
 | |
| 	InfoLevel
 | |
| 	// WarnLevel level. Non-critical entries that deserve eyes.
 | |
| 	WarnLevel
 | |
| 	// ErrorLevel level. Logs. Used for errors that should definitely be noted.
 | |
| 	ErrorLevel
 | |
| 	// FatalLevel level. Logs and then calls `logger.Exit(1)`. highest level of severity.
 | |
| 	FatalLevel
 | |
| )
 | |
| 
 | |
| func (l Level) String() string {
 | |
| 	switch l {
 | |
| 	case TraceLevel:
 | |
| 		return "trace"
 | |
| 	case DebugLevel:
 | |
| 		return "debug"
 | |
| 	case InfoLevel:
 | |
| 		return "info"
 | |
| 	case WarnLevel:
 | |
| 		return "warn"
 | |
| 	case ErrorLevel:
 | |
| 		return "error"
 | |
| 	case FatalLevel:
 | |
| 		return "fatal"
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // Enabled returns true if the given level is at or above this level.
 | |
| func (l Level) Enabled(lvl Level) bool {
 | |
| 	return lvl >= l
 | |
| }
 | |
| 
 | |
| // GetLevel converts a level string into a logger Level value.
 | |
| // returns an error if the input string does not match known values.
 | |
| func GetLevel(levelStr string) (Level, error) {
 | |
| 	switch levelStr {
 | |
| 	case TraceLevel.String():
 | |
| 		return TraceLevel, nil
 | |
| 	case DebugLevel.String():
 | |
| 		return DebugLevel, nil
 | |
| 	case InfoLevel.String():
 | |
| 		return InfoLevel, nil
 | |
| 	case WarnLevel.String():
 | |
| 		return WarnLevel, nil
 | |
| 	case ErrorLevel.String():
 | |
| 		return ErrorLevel, nil
 | |
| 	case FatalLevel.String():
 | |
| 		return FatalLevel, nil
 | |
| 	}
 | |
| 	return InfoLevel, fmt.Errorf("Unknown Level String: '%s', defaulting to InfoLevel", levelStr)
 | |
| }
 | |
| 
 | |
| func Info(args ...interface{}) {
 | |
| 	DefaultLogger.Log(InfoLevel, args...)
 | |
| }
 | |
| 
 | |
| func Infof(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(InfoLevel, template, args...)
 | |
| }
 | |
| 
 | |
| func Trace(args ...interface{}) {
 | |
| 	DefaultLogger.Log(TraceLevel, args...)
 | |
| }
 | |
| 
 | |
| func Tracef(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(TraceLevel, template, args...)
 | |
| }
 | |
| 
 | |
| func Debug(args ...interface{}) {
 | |
| 	DefaultLogger.Log(DebugLevel, args...)
 | |
| }
 | |
| 
 | |
| func Debugf(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(DebugLevel, template, args...)
 | |
| }
 | |
| 
 | |
| func Warn(args ...interface{}) {
 | |
| 	DefaultLogger.Log(WarnLevel, args...)
 | |
| }
 | |
| 
 | |
| func Warnf(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(WarnLevel, template, args...)
 | |
| }
 | |
| 
 | |
| func Error(args ...interface{}) {
 | |
| 	DefaultLogger.Log(ErrorLevel, args...)
 | |
| }
 | |
| 
 | |
| func Errorf(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(ErrorLevel, template, args...)
 | |
| }
 | |
| 
 | |
| func Fatal(args ...interface{}) {
 | |
| 	DefaultLogger.Log(FatalLevel, args...)
 | |
| 	os.Exit(1)
 | |
| }
 | |
| 
 | |
| func Fatalf(template string, args ...interface{}) {
 | |
| 	DefaultLogger.Logf(FatalLevel, template, args...)
 | |
| 	os.Exit(1)
 | |
| }
 | |
| 
 | |
| // Returns true if the given level is at or lower the current logger level
 | |
| func V(lvl Level, log Logger) bool {
 | |
| 	l := DefaultLogger
 | |
| 	if log != nil {
 | |
| 		l = log
 | |
| 	}
 | |
| 	return l.Options().Level <= lvl
 | |
| }
 |