1package xlog 2 3import "os" 4import "fmt" 5 6// Logger is the interface exposed to the internals of a package, which uses it 7// to log messages. This is the other side of a Site. 8// 9// The 'f' functions work like Printf. The suffix-free functions work like 10// 'Print'. The 'e' functions are no-ops if nil is passed for the error; 11// otherwise, they print the error as well as the arguments specified. 12// 13// Fatal calls os.Exit(1) like "log", and Panic panics. Both emit 14// Critical-severity log messages before doing so. 15type Logger struct { 16 Sink 17} 18 19// 20 21func (l Logger) Tracef(format string, params ...interface{}) { 22 l.ReceiveLocally(SevTrace, format, params...) 23} 24 25func (l Logger) Debugf(format string, params ...interface{}) { 26 l.ReceiveLocally(SevDebug, format, params...) 27} 28 29func (l Logger) Infof(format string, params ...interface{}) { 30 l.ReceiveLocally(SevInfo, format, params...) 31} 32 33func (l Logger) Noticef(format string, params ...interface{}) { 34 l.ReceiveLocally(SevNotice, format, params...) 35} 36 37func (l Logger) Warnf(format string, params ...interface{}) { 38 l.ReceiveLocally(SevWarn, format, params...) 39} 40 41func (l Logger) Errorf(format string, params ...interface{}) { 42 l.ReceiveLocally(SevError, format, params...) 43} 44 45func (l Logger) Criticalf(format string, params ...interface{}) { 46 l.ReceiveLocally(SevCritical, format, params...) 47} 48 49func (l Logger) Alertf(format string, params ...interface{}) { 50 l.ReceiveLocally(SevAlert, format, params...) 51} 52 53func (l Logger) Emergencyf(format string, params ...interface{}) { 54 l.ReceiveLocally(SevEmergency, format, params...) 55} 56 57func (l Logger) Panicf(format string, params ...interface{}) { 58 l.Criticalf("panic: "+format, params...) 59 panic(fmt.Sprintf(format, params...)) 60} 61 62func (l Logger) Fatalf(format string, params ...interface{}) { 63 l.Criticalf("fatal: "+format, params...) 64 os.Exit(1) 65} 66 67func (l Logger) Traceef(err error, format string, params ...interface{}) { 68 l.ReceiveLocallye(SevTrace, err, format, params...) 69} 70 71func (l Logger) Debugef(err error, format string, params ...interface{}) { 72 l.ReceiveLocallye(SevDebug, err, format, params...) 73} 74 75func (l Logger) Infoef(err error, format string, params ...interface{}) { 76 l.ReceiveLocallye(SevInfo, err, format, params...) 77} 78 79func (l Logger) Noticeef(err error, format string, params ...interface{}) { 80 l.ReceiveLocallye(SevNotice, err, format, params...) 81} 82 83func (l Logger) Warnef(err error, format string, params ...interface{}) { 84 l.ReceiveLocallye(SevWarn, err, format, params...) 85} 86 87func (l Logger) Erroref(err error, format string, params ...interface{}) { 88 l.ReceiveLocallye(SevError, err, format, params...) 89} 90 91func (l Logger) Criticalef(err error, format string, params ...interface{}) { 92 l.ReceiveLocallye(SevCritical, err, format, params...) 93} 94 95func (l Logger) Alertef(err error, format string, params ...interface{}) { 96 l.ReceiveLocallye(SevAlert, err, format, params...) 97} 98 99func (l Logger) Emergencyef(err error, format string, params ...interface{}) { 100 l.ReceiveLocallye(SevEmergency, err, format, params...) 101} 102 103func (l Logger) Panicef(err error, format string, params ...interface{}) { 104 if err != nil { 105 l.Criticalef(err, "panic: "+format, params...) 106 panic(fmt.Sprintf(format, params...)) 107 } 108} 109 110func (l Logger) Fatalef(err error, format string, params ...interface{}) { 111 if err != nil { 112 l.Criticalef(err, "fatal: "+format, params...) 113 os.Exit(1) 114 } 115} 116 117// TODO: optimize this 118 119func (l Logger) Trace(params ...interface{}) { 120 l.Tracef("%s", fmt.Sprint(params...)) 121} 122 123func (l Logger) Debug(params ...interface{}) { 124 l.Debugf("%s", fmt.Sprint(params...)) 125} 126 127func (l Logger) Info(params ...interface{}) { 128 l.Infof("%s", fmt.Sprint(params...)) 129} 130 131func (l Logger) Notice(params ...interface{}) { 132 l.Noticef("%s", fmt.Sprint(params...)) 133} 134 135func (l Logger) Warn(params ...interface{}) { 136 l.Warnf("%s", fmt.Sprint(params...)) 137} 138 139func (l Logger) Error(params ...interface{}) { 140 l.Errorf("%s", fmt.Sprint(params...)) 141} 142 143func (l Logger) Critical(params ...interface{}) { 144 l.Criticalf("%s", fmt.Sprint(params...)) 145} 146 147func (l Logger) Alert(params ...interface{}) { 148 l.Alertf("%s", fmt.Sprint(params...)) 149} 150 151func (l Logger) Emergency(params ...interface{}) { 152 l.Emergencyf("%s", fmt.Sprint(params...)) 153} 154 155func (l Logger) Panic(params ...interface{}) { 156 l.Panicf("%s", fmt.Sprint(params...)) 157} 158 159func (l Logger) Fatal(params ...interface{}) { 160 l.Fatalf("%s", fmt.Sprint(params...)) 161} 162 163// 164func (l Logger) Tracee(err error, params ...interface{}) { 165 if err != nil { 166 l.Tracef("%s: %v", fmt.Sprint(params...), err) 167 } 168} 169 170func (l Logger) Debuge(err error, params ...interface{}) { 171 if err != nil { 172 l.Debugf("%s: %v", fmt.Sprint(params...), err) 173 } 174} 175 176func (l Logger) Infoe(err error, params ...interface{}) { 177 if err != nil { 178 l.Infof("%s: %v", fmt.Sprint(params...), err) 179 } 180} 181 182func (l Logger) Noticee(err error, params ...interface{}) { 183 if err != nil { 184 l.Noticef("%s: %v", fmt.Sprint(params...), err) 185 } 186} 187 188func (l Logger) Warne(err error, params ...interface{}) { 189 if err != nil { 190 l.Warnf("%s: %v", fmt.Sprint(params...), err) 191 } 192} 193 194func (l Logger) Errore(err error, params ...interface{}) { 195 if err != nil { 196 l.Errorf("%s: %v", fmt.Sprint(params...), err) 197 } 198} 199 200func (l Logger) Criticale(err error, params ...interface{}) { 201 if err != nil { 202 l.Criticalf("%s: %v", fmt.Sprint(params...), err) 203 } 204} 205 206func (l Logger) Alerte(err error, params ...interface{}) { 207 if err != nil { 208 l.Alertf("%s: %v", fmt.Sprint(params...), err) 209 } 210} 211 212func (l Logger) Emergencye(err error, params ...interface{}) { 213 if err != nil { 214 l.Emergencyf("%s: %v", fmt.Sprint(params...), err) 215 } 216} 217 218func (l Logger) Fatale(err error, params ...interface{}) { 219 if err != nil { 220 l.Fatalf("%s: %v", fmt.Sprint(params...), err) 221 } 222} 223 224func (l Logger) Panice(err error, params ...interface{}) { 225 if err != nil { 226 l.Panicf("%s: %v", fmt.Sprint(params...), err) 227 } 228} 229 230func (l Logger) ReceiveLocallye(severity Severity, err error, format string, params ...interface{}) { 231 if err == nil { 232 return 233 } 234 235 l.ReceiveLocally(severity, "%s: %v", fmt.Sprintf(format, params...), err) 236} 237