github.com/mit-dci/lit@v0.0.0-20221102210550-8c3d3b49f2ce/logging/log.go (about)

     1  package logging
     2  
     3  // Log Levels:
     4  // 3: DebugLevel prints Panics, Fatals, Errors, Warnings, Infos and Debugs
     5  // 2: InfoLevel  prints Panics, Fatals, Errors, Warnings and Info
     6  // 1: WarnLevel  prints Panics, Fatals, Errors and Warnings
     7  // 0: ErrorLevel prints Panics, Fatals and Errors
     8  // Default is level 0
     9  // Code for tagging logs:
    10  // Debug -> Useful debugging information
    11  // Info  -> Something noteworthy happened
    12  // Warn  -> You should probably take a look at this
    13  // Error -> Something failed but I'm not quitting
    14  // Fatal -> Bye
    15  
    16  import (
    17  	"fmt"
    18  	"io"
    19  	"log"
    20  	"os"
    21  )
    22  
    23  type LogLevel int
    24  
    25  const (
    26  	LogLevelError   LogLevel = 0
    27  	LogLevelWarning LogLevel = 1
    28  	LogLevelInfo    LogLevel = 2
    29  	LogLevelDebug   LogLevel = 3
    30  )
    31  
    32  var logLevel = LogLevelError // the default
    33  
    34  func SetLogLevel(newLevel int) {
    35  	logLevel = LogLevel(newLevel)
    36  }
    37  
    38  func SetLogFile(logFile io.Writer) {
    39  	log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)
    40  	logOutput := io.MultiWriter(os.Stdout, logFile)
    41  	log.SetOutput(logOutput)
    42  }
    43  
    44  func getPrefix(level string) string {
    45  	return fmt.Sprintf("[%s]", level)
    46  }
    47  
    48  func Fatalln(args ...interface{}) {
    49  	log.Fatalln(args...)
    50  }
    51  
    52  func Fatalf(format string, args ...interface{}) {
    53  	log.Fatalf(format, args...)
    54  }
    55  
    56  func Fatal(args ...interface{}) {
    57  	log.Fatal(args...)
    58  }
    59  
    60  func Debugf(format string, args ...interface{}) {
    61  	if logLevel >= LogLevelDebug {
    62  		log.Printf(fmt.Sprintf("%s %s", getPrefix("DEBUG"), format), args...)
    63  	}
    64  }
    65  
    66  func Infof(format string, args ...interface{}) {
    67  	if logLevel >= LogLevelInfo {
    68  		log.Printf(fmt.Sprintf("%s %s", getPrefix("INFO"), format), args...)
    69  	}
    70  }
    71  
    72  func Warnf(format string, args ...interface{}) {
    73  	if logLevel >= LogLevelWarning {
    74  		log.Printf(fmt.Sprintf("%s %s", getPrefix("WARN"), format), args...)
    75  	}
    76  }
    77  
    78  func Errorf(format string, args ...interface{}) {
    79  	if logLevel >= LogLevelError {
    80  		log.Printf(fmt.Sprintf("%s %s", getPrefix("ERROR"), format), args...)
    81  	}
    82  }
    83  
    84  func Debugln(args ...interface{}) {
    85  	if logLevel >= LogLevelDebug {
    86  		args = append([]interface{}{getPrefix("DEBUG")}, args...)
    87  		log.Println(args...)
    88  	}
    89  }
    90  
    91  func Infoln(args ...interface{}) {
    92  	if logLevel >= LogLevelInfo {
    93  		args = append([]interface{}{getPrefix("INFO")}, args...)
    94  		log.Println(args...)
    95  	}
    96  }
    97  
    98  func Warnln(args ...interface{}) {
    99  	if logLevel >= LogLevelWarning {
   100  		args = append([]interface{}{getPrefix("WARN")}, args...)
   101  		log.Println(args...)
   102  	}
   103  }
   104  
   105  func Errorln(args ...interface{}) {
   106  	if logLevel >= LogLevelError {
   107  		args = append([]interface{}{getPrefix("ERROR")}, args...)
   108  		log.Println(args...)
   109  	}
   110  }
   111  
   112  func Debug(args ...interface{}) {
   113  	if logLevel >= LogLevelDebug {
   114  		args = append([]interface{}{getPrefix("DEBUG")}, args...)
   115  		log.Print(args...)
   116  	}
   117  }
   118  
   119  func Info(args ...interface{}) {
   120  	if logLevel >= LogLevelInfo {
   121  		args = append([]interface{}{getPrefix("INFO")}, args...)
   122  		log.Print(args...)
   123  	}
   124  }
   125  
   126  func Warn(args ...interface{}) {
   127  	if logLevel >= LogLevelWarning {
   128  		args = append([]interface{}{getPrefix("WARN")}, args...)
   129  		log.Print(args...)
   130  	}
   131  }
   132  
   133  func Error(args ...interface{}) {
   134  	if logLevel >= LogLevelError {
   135  		args = append([]interface{}{getPrefix("ERROR")}, args...)
   136  		log.Print(args...)
   137  	}
   138  }