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 }