-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.go
89 lines (77 loc) · 2.01 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
79
80
81
82
83
84
85
86
87
88
89
package log
import (
"errors"
"github.com/kodekoding/phastos/go/env"
"github.com/kodekoding/phastos/go/log/logger"
"github.com/kodekoding/phastos/go/log/logger/zerolog"
)
type (
// Level of log
Level = logger.Level
// Logger interface
Logger = logger.Logger
)
// Zerolog engine
const Zerolog Engine = logger.Zerolog
// Level option
const (
TraceLevel = logger.TraceLevel
DebugLevel = logger.DebugLevel
InfoLevel = logger.InfoLevel
WarnLevel = logger.WarnLevel
ErrorLevel = logger.ErrorLevel
FatalLevel = logger.FatalLevel
)
var (
isDev = env.IsDevelopment()
infoLogger, _ = NewLogger(Zerolog, &logger.Config{Level: logger.InfoLevel, UseColor: isDev})
traceLogger = infoLogger
debugLogger = infoLogger
warnLogger = infoLogger
errorLogger = infoLogger
fatalLogger = infoLogger
loggers = [6]*Logger{
&traceLogger,
&debugLogger,
&infoLogger,
&warnLogger,
&errorLogger,
&fatalLogger,
}
errInvalidLogger = errors.New("invalid logger")
errInvalidLevel = errors.New("invalid log level")
)
// NewLogger creates a new zerolog logger.
// Engine parameter is not used anymore.
func NewLogger(engine Engine, config *logger.Config) (Logger, error) {
config.UseColor = env.IsDevelopment()
return zerolog.New(config)
}
// SetLogger for certain level
func SetLogger(level logger.Level, lgr logger.Logger) error {
if level < logger.TraceLevel || level > logger.FatalLevel {
return errInvalidLevel
}
if lgr == nil || !lgr.IsValid() {
return errInvalidLogger
}
*loggers[level] = lgr
return nil
}
// SetLevel adjusts log level threshold.
// Only log with level higher or equal with this level will be printed
func SetLevel(level Level) {
if level < 0 {
level = InfoLevel
}
traceLogger.SetLevel(level)
debugLogger.SetLevel(level)
infoLogger.SetLevel(level)
warnLogger.SetLevel(level)
errorLogger.SetLevel(level)
fatalLogger.SetLevel(level)
}
// SetLevelString adjusts log level threshold using string
func SetLevelString(level string) {
SetLevel(logger.StringToLevel(level))
}