-
Notifications
You must be signed in to change notification settings - Fork 11
/
log.go
67 lines (59 loc) · 1.86 KB
/
log.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
package log
/*
We define some logging functions here that act as a proxy to our
real implementation of the logger. We do it this way so that the
rest of the cli can use the logger without worrying the real implementation.
In this case, we use uber's super fast zap logger, but we replace with our
own logger if necessary.
*/
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var logger, _ = zap.NewProduction()
var log *zap.SugaredLogger
var atom zap.AtomicLevel
type Logger interface {
Debug(args ...interface{})
Info(args ...interface{})
Warn(args ...interface{})
Error(args ...interface{})
DPanic(args ...interface{})
Panic(args ...interface{})
Fatal(args ...interface{})
Debugf(template string, args ...interface{})
Infof(template string, args ...interface{})
Warnf(template string, args ...interface{})
Errorf(template string, args ...interface{})
DPanicf(template string, args ...interface{})
Panicf(template string, args ...interface{})
Fatalf(template string, args ...interface{})
Debugw(msg string, keysAndValues ...interface{})
Infow(msg string, keysAndValues ...interface{})
Warnw(msg string, keysAndValues ...interface{})
Errorw(msg string, keysAndValues ...interface{})
DPanicw(msg string, keysAndValues ...interface{})
Panicw(msg string, keysAndValues ...interface{})
Fatalw(msg string, keysAndValues ...interface{})
}
func init() {
// change the encoding to console from json
cfg := zap.NewProductionConfig()
cfg.Encoding = "console"
atom = zap.NewAtomicLevelAt(zap.WarnLevel)
cfg.Level = atom
if paralusLogger, err := cfg.Build(); err == nil {
// if there was no error, use the custom config, otherwise
// use the default config
logger = paralusLogger
}
// flush buffer, if any
defer logger.Sync()
log = logger.Sugar()
}
func GetLogger() *zap.SugaredLogger {
return log
}
func SetLevel(level zapcore.Level) {
atom.SetLevel(level)
}