-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger.go
78 lines (63 loc) · 1.69 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package logger
import (
"os"
"sync"
"github.com/go-kit/log"
"github.com/go-kit/log/level"
)
var logger log.Logger
var lock = &sync.Mutex{}
func GetLogger() log.Logger {
lock.Lock()
defer lock.Unlock()
// create one shared logger
if logger == nil {
logger = log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout))
logger = log.With(logger, "ts", log.DefaultTimestampUTC) // add timestamp
// logger = log.With(logger, "caller", log.DefaultCaller) // add caller=example.go:33
envLogLevel := os.Getenv("LOG_LEVEL")
logLevel := level.AllowInfo()
switch envLogLevel {
case "debug":
logLevel = level.AllowDebug()
case "info":
logLevel = level.AllowInfo()
case "warn":
logLevel = level.AllowWarn()
case "error":
logLevel = level.AllowError()
default:
logLevel = level.AllowInfo()
}
logger = level.NewFilter(logger, logLevel)
}
return logger
}
// func Log(msg string, keyvals ...interface{}) {
// GetLogger().Log("msg", msg, keyvals)
// }
func Debug(msg string, keyvals ...interface{}) {
keyvals = prependMsg(msg, keyvals...)
level.Debug(GetLogger()).Log(keyvals...)
}
func Info(msg string, keyvals ...interface{}) {
keyvals = prependMsg(msg, keyvals...)
level.Info(GetLogger()).Log(keyvals...)
}
func Warn(msg string, keyvals ...interface{}) {
keyvals = prependMsg(msg, keyvals...)
level.Warn(GetLogger()).Log(keyvals...)
}
func Error(msg string, keyvals ...interface{}) {
keyvals = prependMsg(msg, keyvals...)
level.Error(GetLogger()).Log(keyvals...)
}
func prependMsg(msg string, keyvals ...interface{}) []interface{} {
newKeyVals := []interface{}{
"msg", msg,
}
for _, keyval := range keyvals {
newKeyVals = append(newKeyVals, keyval)
}
return newKeyVals
}