gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/util/log/log.go (about) 1 // Package log is a global internal logger 2 package log 3 4 import ( 5 "fmt" 6 "os" 7 8 "github.com/go-log/log" 9 golog "github.com/go-log/log/log" 10 ) 11 12 // level is a log level 13 type Level int 14 15 const ( 16 LevelFatal Level = iota 17 LevelError 18 LevelInfo 19 LevelWarn 20 LevelDebug 21 LevelTrace 22 ) 23 24 var ( 25 // the local logger 26 logger log.Logger = golog.New() 27 28 // default log level is info 29 level = LevelInfo 30 31 // prefix for all messages 32 prefix string 33 ) 34 35 func init() { 36 switch os.Getenv("MICRO_LOG_LEVEL") { 37 case "trace": 38 level = LevelTrace 39 case "debug": 40 level = LevelDebug 41 case "warn": 42 level = LevelWarn 43 case "info": 44 level = LevelInfo 45 case "error": 46 level = LevelError 47 case "fatal": 48 level = LevelFatal 49 } 50 } 51 52 // Log makes use of github.com/go-log/log.Log 53 func Log(v ...interface{}) { 54 if len(prefix) > 0 { 55 logger.Log(append([]interface{}{prefix, " "}, v...)...) 56 return 57 } 58 logger.Log(v...) 59 } 60 61 // Logf makes use of github.com/go-log/log.Logf 62 func Logf(format string, v ...interface{}) { 63 if len(prefix) > 0 { 64 format = prefix + " " + format 65 } 66 logger.Logf(format, v...) 67 } 68 69 // WithLevel logs with the level specified 70 func WithLevel(l Level, v ...interface{}) { 71 if l > level { 72 return 73 } 74 Log(v...) 75 } 76 77 // WithLevel logs with the level specified 78 func WithLevelf(l Level, format string, v ...interface{}) { 79 if l > level { 80 return 81 } 82 Logf(format, v...) 83 } 84 85 // Trace provides trace level logging 86 func Trace(v ...interface{}) { 87 WithLevel(LevelTrace, v...) 88 } 89 90 // Tracef provides trace level logging 91 func Tracef(format string, v ...interface{}) { 92 WithLevelf(LevelTrace, format, v...) 93 } 94 95 // Debug provides debug level logging 96 func Debug(v ...interface{}) { 97 WithLevel(LevelDebug, v...) 98 } 99 100 // Debugf provides debug level logging 101 func Debugf(format string, v ...interface{}) { 102 WithLevelf(LevelDebug, format, v...) 103 } 104 105 // Warn provides warn level logging 106 func Warn(v ...interface{}) { 107 WithLevel(LevelWarn, v...) 108 } 109 110 // Warnf provides warn level logging 111 func Warnf(format string, v ...interface{}) { 112 WithLevelf(LevelWarn, format, v...) 113 } 114 115 // Info provides info level logging 116 func Info(v ...interface{}) { 117 WithLevel(LevelInfo, v...) 118 } 119 120 // Infof provides info level logging 121 func Infof(format string, v ...interface{}) { 122 WithLevelf(LevelInfo, format, v...) 123 } 124 125 // Error provides warn level logging 126 func Error(v ...interface{}) { 127 WithLevel(LevelError, v...) 128 } 129 130 // Errorf provides warn level logging 131 func Errorf(format string, v ...interface{}) { 132 WithLevelf(LevelError, format, v...) 133 } 134 135 // Fatal logs with Log and then exits with os.Exit(1) 136 func Fatal(v ...interface{}) { 137 WithLevel(LevelFatal, v...) 138 os.Exit(1) 139 } 140 141 // Fatalf logs with Logf and then exits with os.Exit(1) 142 func Fatalf(format string, v ...interface{}) { 143 WithLevelf(LevelFatal, format, v...) 144 os.Exit(1) 145 } 146 147 // SetLogger sets the local logger 148 func SetLogger(l log.Logger) { 149 logger = l 150 } 151 152 // GetLogger returns the local logger 153 func GetLogger() log.Logger { 154 return logger 155 } 156 157 // SetLevel sets the log level 158 func SetLevel(l Level) { 159 level = l 160 } 161 162 // GetLevel returns the current level 163 func GetLevel() Level { 164 return level 165 } 166 167 // Set a prefix for the logger 168 func SetPrefix(p string) { 169 prefix = p 170 } 171 172 // Set service name 173 func Name(name string) { 174 prefix = fmt.Sprintf("[%s]", name) 175 }