/
logger.go
58 lines (49 loc) · 1.21 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
package logging
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
"strings"
)
var Logger *zap.SugaredLogger
var (
mappingLogLevel = map[string]zapcore.Level{
"DEBUG": zapcore.DebugLevel,
"INFO": zapcore.InfoLevel,
"WARN": zapcore.WarnLevel,
"ERROR": zapcore.ErrorLevel,
}
)
func SetUpLogger() {
logLevel := getLogLevel()
encoder := getEncoder()
logWriter := getLogWriter()
coreLogger := zapcore.NewCore(encoder, logWriter, logLevel)
Logger = zap.New(coreLogger).Sugar()
}
func GetLogger() *zap.SugaredLogger{
return Logger
}
func getLogLevel() zapcore.Level {
var level string
if value, ok := os.LookupEnv("LOGLEVEL"); ok {
level = strings.ToUpper(value)
} else {
level = "INFO"
}
return mappingLogLevel[level]
}
func getEncoder() zapcore.Encoder {
encoderConfig := getEncoderConfig()
return zapcore.NewConsoleEncoder(encoderConfig)
}
func getEncoderConfig() zapcore.EncoderConfig {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
encoderConfig.ConsoleSeparator = " "
return encoderConfig
}
func getLogWriter() zapcore.WriteSyncer {
return zapcore.AddSync(os.Stdout)
}