-
Notifications
You must be signed in to change notification settings - Fork 0
/
log.go
58 lines (51 loc) · 1.17 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
package main
import (
"encoding/json"
"fmt"
"log"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var logger *zap.Logger
func InitLogger() {
// 日志地址 "out.log" 自定义
lp := cfg.APP.LogFile
// 日志级别 DEBUG,ERROR, INFO
lv := cfg.APP.LogLevel
// 是否输出到终端
isStdout := true
if cfg.APP.LogStdout != true {
isStdout = false
}
initLogger(lp, lv, isStdout)
log.SetFlags(log.Lmicroseconds | log.Lshortfile | log.LstdFlags)
}
func initLogger(lp string, lv string, isStdout bool) {
var js string
if isStdout {
js = fmt.Sprintf(`{
"level": "%s",
"encoding": "json",
"outputPaths": ["stdout"],
"errorOutputPaths": ["stdout"]
}`, lv)
} else {
js = fmt.Sprintf(`{
"level": "%s",
"encoding": "json",
"outputPaths": ["%s"],
"errorOutputPaths": ["%s"]
}`, lv, lp, lp)
}
var zapcfg zap.Config
if err := json.Unmarshal([]byte(js), &zapcfg); err != nil {
panic(err)
}
zapcfg.EncoderConfig = zap.NewProductionEncoderConfig()
zapcfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
var err error
logger, err = zapcfg.Build()
if err != nil {
log.Fatal("init logger error: ", err)
}
}