github.com/scottcagno/storage@v1.8.0/pkg/lsmt/logger.go (about)

     1  package lsmt
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"os"
     7  )
     8  
     9  const (
    10  	LevelDebug logLevel = iota
    11  	LevelInfo
    12  	LevelWarn
    13  	LevelError
    14  	LevelFatal
    15  	LevelOff
    16  )
    17  
    18  func LevelText(level logLevel) string {
    19  	switch level {
    20  	case LevelDebug:
    21  		return "Level=Debug"
    22  	case LevelInfo:
    23  		return "Level=Info"
    24  	case LevelWarn:
    25  		return "Level=Warn"
    26  	case LevelError:
    27  		return "Level=Error"
    28  	case LevelFatal:
    29  		return "Level=Fatal"
    30  	case LevelOff:
    31  		return "Level=Off"
    32  	default:
    33  		return "Level=Unknown"
    34  	}
    35  }
    36  
    37  type logLevel int
    38  
    39  type Logger struct {
    40  	*log.Logger
    41  	level logLevel
    42  }
    43  
    44  func NewLogger(level logLevel) *Logger {
    45  	return &Logger{
    46  		Logger: log.New(os.Stderr, "", log.LstdFlags),
    47  		level:  level,
    48  	}
    49  }
    50  
    51  func (l *Logger) Debug(s string, a ...interface{}) {
    52  	if l.level > LevelDebug {
    53  		return
    54  	}
    55  	ls := fmt.Sprintf("| DEBUG | %s", s)
    56  	if a == nil || len(a) == 0 {
    57  		l.Println(ls)
    58  		return
    59  	}
    60  	l.Printf(ls, a...)
    61  }
    62  
    63  func (l *Logger) Info(s string, a ...interface{}) {
    64  	if l.level > LevelInfo {
    65  		return
    66  	}
    67  	ls := fmt.Sprintf("|  INFO | %s", s)
    68  	if a == nil || len(a) == 0 {
    69  		l.Println(ls)
    70  		return
    71  	}
    72  	l.Printf(ls, a...)
    73  }
    74  
    75  func (l *Logger) Warn(s string, a ...interface{}) {
    76  	if l.level > LevelWarn {
    77  		return
    78  	}
    79  	ls := fmt.Sprintf("|  WARN | %s", s)
    80  	if a == nil || len(a) == 0 {
    81  		l.Println(ls)
    82  		return
    83  	}
    84  	l.Printf(ls, a...)
    85  }
    86  
    87  func (l *Logger) Error(s string, a ...interface{}) {
    88  	if l.level > LevelError {
    89  		return
    90  	}
    91  	ls := fmt.Sprintf("| ERROR | %s", s)
    92  	if a == nil || len(a) == 0 {
    93  		l.Println(ls)
    94  		return
    95  	}
    96  	l.Printf(ls, a...)
    97  }
    98  
    99  func (l *Logger) Fatal(s string, a ...interface{}) {
   100  	if l.level > LevelFatal {
   101  		return
   102  	}
   103  	ls := fmt.Sprintf("| FATAL | %s", s)
   104  	if a == nil || len(a) == 0 {
   105  		l.Fatalln(ls)
   106  	}
   107  	l.Fatalf(ls, a...)
   108  }